Discussion:
[Ryu-devel] Ryu-devel Digest, Vol 67, Issue 62
13161901463
2017-06-26 02:03:00 UTC
Permalink
劂䜕取消英文䞍倪奜请协助谢谢。

2017-06-26


刘计平 Jiping Liu
**************************
QQ379779868
手 机13161901463
邮 箱: ***@126.com



发件人ryu-devel-***@lists.sourceforge.net
发送时闎2017-06-26 08:17
䞻题Ryu-devel Digest, Vol 67, Issue 62
收件人"ryu-devel"<ryu-***@lists.sourceforge.net>
抄送

Send Ryu-devel mailing list submissions to
ryu-***@lists.sourceforge.net

To subscribe or unsubscribe via the World Wide Web, visit
https://lists.sourceforge.net/lists/listinfo/ryu-devel
or, via email, send a message with subject or body 'help' to
ryu-devel-***@lists.sourceforge.net

You can reach the person managing the list at
ryu-devel-***@lists.sourceforge.net

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Ryu-devel digest..."


Today's Topics:

1. Re: List to .csv in "port stats" (Sergio Silva)
2. List to .csv in "port stats" (Sergio Silva)
3. Re: Ryu Controller Question (Iwase Yusuke)
4. Re: Adding REST to Ryu (Iwase Yusuke)


----------------------------------------------------------------------

Message: 1
Date: Sun, 25 Jun 2017 09:25:03 -0300
From: Sergio Silva <***@ecomp.poli.br>
To: ryu-***@lists.sourceforge.net
Subject: Re: [Ryu-devel] List to .csv in "port stats"
Message-ID:
<CALD5ZqU-Z2RSjWDR-***@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Dear friend,
Please, I would like to know if there is a possibility that the "port
stats" files could be modified from list to default ".csv". This my
suggestion is due to the fact that the standard "Comma-Separated Values"
are files are widely used with numpy, pandas, database and others. For
scientific analysis, statistical surveys with prediction and artificial
intelligence. I think if Ryu would have a lot more to offer if the
collected files had the format ".csv" than a list. I thank you.
Dear friend,
Please, I would like to know if there is a possibility that the "port
stats" files could be modified from list to default ".csv". This my
suggestion is due to the fact that the standard "Comma-Separated Values"
are files are widely used with numpy, pandas, database and others. For
scientific analysis, statistical surveys with prediction and artificial
intelligence. I think if Ryu would have a lot more to offer if the
collected files had the format ".csv" than a list. I thank you.
-------------- next part --------------
An HTML attachment was scrubbed...

------------------------------

Message: 2
Date: Sun, 25 Jun 2017 09:03:06 -0300
From: Sergio Silva <***@ecomp.poli.br>
To: ryu-***@lists.sourceforge.net
Subject: [Ryu-devel] List to .csv in "port stats"
Message-ID:
<CALD5ZqUfPjhvQTt5Zd_suoN3_uRQLEs+***@mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Dear friend,
Please, I would like to know if there is a possibility that the "port
stats" files could be modified from list to default ".csv". This my
suggestion is due to the fact that the standard "Comma-Separated Values"
are files are widely used with numpy, pandas, database and others. For
scientific analysis, statistical surveys with prediction and artificial
intelligence. I think if Ryu would have a lot more to offer if the
collected files had the format ".csv" than a list. I thank you.
-------------- next part --------------
An HTML attachment was scrubbed...

------------------------------

Message: 3
Date: Mon, 26 Jun 2017 08:56:20 +0900
From: Iwase Yusuke <***@gmail.com>
To: ***@gmail.com
Cc: ryu-***@lists.sourceforge.net
Subject: Re: [Ryu-devel] Ryu Controller Question
Message-ID: <8e4aa43e-4ab6-34ff-eb62-***@gmail.com>
Content-Type: text/plain; charset=utf-8; format=flowed

Hi Hosseini,

Yes, we welcome your questions!
https://github.com/osrg/ryu#support

FYI, you can find the mail archive, and search the similar posts/discussions on here:
http://dir.gmane.org/gmane.network.ryu.devel

Thanks,
Iwase
Hello
My Name is Farshad Hosseini From Iran. I am working on my Master Thesis.
I have some questions about this controller.
May i ask them here?
Thank you
Best wishes
Hosseini
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------

Message: 4
Date: Mon, 26 Jun 2017 09:17:16 +0900
From: Iwase Yusuke <***@gmail.com>
To: douglas.harewood-***@bristol.ac.uk
Cc: ryu-***@lists.sourceforge.net
Subject: Re: [Ryu-devel] Adding REST to Ryu
Message-ID: <f7acd5be-6a9e-abf6-e2c5-***@gmail.com>
Content-Type: text/plain; charset=utf-8; format=flowed

Hi Douglas,
Hi again. My apologies but I seem to be stuck.
Few questions:-
1) Do I need to create a file called user_flags.py ? I cannot locate one in my version of Ryu or do
I need to update my version of Ryu?
To enable "--user-flags" option, please update Ryu with the latest Git source from GitHub, first.
And user_flags.py is supposed to be created by user, so not included in Ryu source.
2) Are all the commands issues via the terminal?
Which "commands" you mean?
The following commands? If so, yes.

# Create user_flogs.py including sample configurations
$ cat <<EOF >user_flags.py
from ryu import cfg

CONF = cfg.CONF
CONF.register_cli_opts([
cfg.StrOpt(
'user-cli-opt', default=None,
help='user original CLI option'),
])
EOF


Thanks,
Iwase
Apologies if I am asking really obvious stuff.
Thanks again,
Douglas
Hi again. I will see how I get on with the instructions you have sent. Regardless of what
happens, I will update you.
Cheers
Douglas
Hi,
Thanks, we are waiting for your report.
FYI, with the following patch, "--user-flags" option for adding your own CLI options
without modification and re-installing, but please note this patch has not be merged
into upstream yet.
This feature should be included in next release on early next month, I guess.
https://sourceforge.net/p/ryu/mailman/ryu-devel/thread/1497504689-15184-2-git-send-email-iwase.yusuke0%40gmail.com/#msg35895311
<https://sourceforge.net/p/ryu/mailman/ryu-devel/thread/1497504689-15184-2-git-send-email-iwase.yusuke0%40gmail.com/#msg35895311>
Thanks,
Iwase
Hi again. Ok, can you talk me through the second part, lets try that and see what
happens. Assuming of course it is still relevant after what we have already tried.
"So If you want to define your own CLI option,
0. Checkout Ryu Git src (if needed).
$ git clone https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>>>
$ cd ryu
1. Add your definitions into "ryu/flags.py".
The syntax is the same as "oslo.config".
https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>>
2. Re-install Ryu at the top of Ryu directory.
$ pip install -r tools/pip-requires
$ python setup.py install
3. Confirm your own option is inserted into ryu-manager.
$ ryu-manager --help"
Cheers
Douglas
Hi Douglas,
Hi again. Apologies for the delay in responding and thank you for getting back to
me so quickly.
I finally figured out what you were telling me. So, below is what I found for each
step of the first thing you suggested.
After using "Python #" to enter the interactive interpreter I typed "import ryu"
and I received no errors, it just went to a new line with this ">>>".
For "ryu.version", it told me my version is 4.12.
For "ryu.app import ofctl_rest", and I I received no errors, it just went to a new
line with this ">>>".
Good, it seems Ryu is installed as expected.
Then, it is weired to show the following "AttributeError"...
AttributeError: 'module' object has not attribute "ofctl_rest"
"manager.main(args=['ryu.app.ofctl_rest'] + sys.argv)" will try to load "ofctl_rest"
from "ryu.app", but "ryu.app import ofctl_rest" does not return any error...
Thanks,
Iwase
Cheers
Douglas
Hi Douglas,
Hello again. Ok, My apologies bit I really need you to simplify this for me.
Starting with the first bit.
1) Ryu is definitely installed but do you know the command to check the
version? I have looked online but I can't find anything specific.
2) Is there also a way to check that Ryu is installed correctly?
3) What do you mean by "import ryu" and "ryu.version"?
4) Also, "from ryu.app import ofctl_rest"?
The commands I wrote on the previous mail can check these points.
"python" command on your shell starts Python interpreter with "Interactive Mode"
https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>>
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>>>
"import ryu" and followed by other words are command (source code) for Python
interactive interpreter.
- "import ryu" checks whether Ryu is installed correctly or not.
- "ryu.version" shows version (e.g., '4.14').
- "from ryu.app import ofctl_rest" checks whether "ofctl_rest" can be imported
from your Python or not.
$ python # start Python interactive interpreter
import ryu # checks if "ryu" is installed or not
ryu.version # show version info
'4.14'
from ryu.app import ofctl_rest # Can import "ofctl_rest"?
Thanks,
Iwase
I will see if I can work through this first to see if I can get it working
this way before I look at the second bit. :D
Thank you for your time and patience so far.
Cheers
Douglas
Hi Douglas,
'module' object has not attribute "ofctl_rest" but it was worth trying so thank you.
Hmmm... 'ryu.app.ofctl_rest' means the Python module path to Ryu's
built-in app.
If it got AttributeError, Ryu might not be installed successfully.
I recommend you to confirm Ryu is installed
$ python
import ryu # Can import "ryu"?
ryu.version # Which version?
'4.14'
from ryu.app import ofctl_rest # Can import "ofctl_rest"?
Regarding the instructions you sent me for altering Ryu, is there any
chance you could explain them a bit more please? I am having a little trouble following them
currently.
Sure.
Ryu defines the CLI options in some modules, the most accessible among
them is
"ryu/flags.py", I guess.
https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>>>
But to reflect your changes, you need to "re-install" Ryu before running your
applications.
So If you want to define your own CLI option,
0. Checkout Ryu Git src (if needed).
$ git clone https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>>>
$ cd ryu
1. Add your definitions into "ryu/flags.py".
The syntax is the same as "oslo.config".
https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>>
2. Re-install Ryu at the top of Ryu directory.
$ pip install -r tools/pip-requires
$ python setup.py install
3. Confirm your own option is inserted into ryu-manager.
$ ryu-manager --help
Thanks,
Iwase
Thank you :)
Douglas
Hi Douglas,
Hmmm... how about swapping the order of arguments?
e.g)
manager.main(args=['ryu.app.ofctl_rest'] + sys.argv)
FYI, I guess Dr.Bernstein did "hack"(used "ryu.cmd.manager"
directly) in order to
add original CLI option like "--netfile" and "--widest_paths".
On the other hand, you can add your original CLI option as following.
$ git diff
diff --git a/ryu/flags.py b/ryu/flags.py
index 69eb3d2..ebf16c8 100644
--- a/ryu/flags.py
+++ b/ryu/flags.py
@@ -112,3 +112,10 @@ CONF.register_cli_opts([
help='Initial Router ID used by Zebra protocol service '
'(default: %s)' % DEFAULT_ZSERV_ROUTER_ID),
], group='zapi')
+
+CONF.register_cli_opts([
+ cfg.StrOpt(
+ 'netfile', default=None, help='network json file'),
+ cfg.BoolOpt(
+ 'widest_paths', default=False, help='Use widest path.'),
+])
Please note you need to re-install Ryu after the above modifications.
$ python setup.py install
Then, with this modification, you can run
"l2DestForwardStaticRyu.py" as the
$ ryu-manager --help
...(snip)...
--netfile NETFILE network json file
...(snip)...
--widest_paths Use widest path.
...(snip)...
$ ryu-manager l2DestForwardStaticRyu.py ryu.app.ofctl_rest
--netfile=ExNetwithLoops1A.json --widest_paths
Thanks,
Iwase
Hi Iwase and thank you for getting back to me. The author of this
program, Dr Bernstein added this line "from ryu.cmd import manager" which as far as I
understand directly starts Ryu from within side L2DestForwardStaticRyu.py. Should be around
line 29 I think. He had to do this he told me because he could not start the program in the
conventional way because he needed to import the "ExNetwithLoops!A.json file" for the
topology with static mac and IP addresses. Apparently he could not do this just using the
standard Ryu format of starting the Ryu Manager with the Controller file and then with REST.
I tried your suggestion by removing "manager.main(args=sys.argv)"
from " if __name__ == "__main__": "
and using the following:-
"manager.main(args=sys.argv + ['ryu.app.ofctl_rest'])" and I got
the following error message in the terminal.
ryu.app.ofctl_rest"
Any advice would be welcome. I am obviously going to see what I
can find here and will let you know if I find anything relevant.
Cheers
Douglas
Hi Douglas,
I checked "L2DestForwardStaticRyu.py", and it seems to be
"hacked" to run
app without "ryu-manager".
To start the built-in Ryu application with
"L2DestForwardStaticRyu.py",
how about the following?
The following appends to "ofctl_rest" app to the argument of
"manager".
- manager.main(args=sys.argv)
+ manager.main(args=sys.argv + ['ryu.app.ofctl_rest'])
Thanks,
Iwase
Hi Iwase. Thank you for contacting me and apologies for my
delay in responding. I have tried what you have suggested but the problem I have is that the
L2DestForwardStaticRyu.py program is designed to run on its own. It imports the the ryu.cmd
import manager and uses the Ryu controller but you start it by typing "|python
l2DestForwardStaticRyu.py --netfile=ExNetwithLoops1A.json" |where it imports
=ExNetWithLoops1A.Json.
When this program is started, it automatically loads Ryu
and implements the code within this program. I am not sure how to start the this and
ryu.app.ofctl_rest at the same time. I have tried starting them separately in different
terminals but that did not work.
Thank you also for the information you have sent. I have
looked at it before but I do not know how to implement this with my custom code. I have been
looking for examples but they seem to be few and far between. Any advice as always would be
greatly appreciated.
Thanks again.
Douglas
On 8 June 2017 at 01:27, Iwase Yusuke
Hi Douglas,
Excuse me for cutting in.
Just for getting flow statistics, how about running
your app and ofctl_rest
together as Fujimoto said.
e.g.)
$ ryu-manager your_app.py ryu.app.ofctl_rest
If you want to implement your own REST APIs on your
app, Ryu-Book is the
most helpful as far as I know.
(You might already be aware of this though...)
http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>>
FYI, here is an sample implementation on
simple_switch_13.py for getting
flow statistics.
The usage of "WSGI" framework is described on Ryu-Book.
$ git diff
diff --git a/ryu/app/simple_switch_13.py
b/ryu/app/simple_switch_13.py
index 3e7c598..f33e474 100644
--- a/ryu/app/simple_switch_13.py
+++ b/ryu/app/simple_switch_13.py
@@ -13,6 +13,8 @@
# See the License for the specific language governing
permissions and
# limitations under the License.
+import json
+
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import CONFIG_DISPATCHER,
MAIN_DISPATCHER
@@ -21,14 +23,26 @@ from ryu.ofproto import ofproto_v1_3
from ryu.lib.packet import packet
from ryu.lib.packet import ethernet
from ryu.lib.packet import ether_types
+from ryu.app.ofctl import api as ofctl_api
+from ryu.app.wsgi import ControllerBase
+from ryu.app.wsgi import Response
+from ryu.app.wsgi import route
+from ryu.app.wsgi import WSGIApplication
+
+
+_URI_PREFIX = '/simpleswitch/stats/{dpid}'
OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
+ _CONTEXTS = {'wsgi': WSGIApplication}
super(SimpleSwitch13, self).__init__(*args,
**kwargs)
self.mac_to_port = {}
+ wsgi = kwargs['wsgi']
+ wsgi.register(SimpleSwitchController,
+ {SimpleSwitch13.__name__: self})
@set_ev_cls(ofp_event.EventOFPSwitchFeatures,
CONFIG_DISPATCHER)
@@ -117,3 +131,32 @@ class
out = parser.OFPPacketOut(datapath=datapath,
buffer_id=msg.buffer_id,
in_port=in_port,
actions=actions, data=data)
datapath.send_msg(out)
+
+ datapath = ofctl_api.get_datapath(self, dpid)
+ return None
+
+ parser = datapath.ofproto_parser
+ req = parser.OFPFlowStatsRequest(datapath)
+
+ rep = ofctl_api.send_msg(
+ app=self, msg=req,
+ reply_cls=parser.OFPFlowStatsReply,
reply_multi=True)
+ return [r.to_jsondict() for r in rep]
+
+
+
+ super(SimpleSwitchController,
self).__init__(req, link, data, **config)
+ self.simple_switch_app =
data[SimpleSwitch13.__name__]
+
+ dpid = int(str(kwargs['dpid']))
+ ret = self.simple_switch_app.get_flow_stats(dpid)
+ return Response(status=404)
+
+ return
Response(content_type='application/json', body=json.dumps(ret))
$ ryu-manager ryu/app/simple_switch_13.py
Registered VCS backend: git
Registered VCS backend: hg
Registered VCS backend: svn
Registered VCS backend: bzr
loading app ryu/app/simple_switch_13.py
loading app ryu.controller.ofp_handler
loading app ryu.app.ofctl.service
loading app ryu.controller.ofp_handler
creating context wsgi
instantiating app ryu.app.ofctl.service of OfctlService
instantiating app ryu/app/simple_switch_13.py of
SimpleSwitch13
instantiating app ryu.controller.ofp_handler of OFPHandler
(10332) wsgi starting up on http://0.0.0.0:8080
...
$ curl -X GET
http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>>>>> | python -m json.tool
[
{
"OFPFlowStatsReply": {
"body": [
{
"OFPFlowStats": {
"byte_count": 140,
"cookie": 0,
"duration_nsec": 771000000,
"duration_sec": 1,
"flags": 0,
"hard_timeout": 0,
"idle_timeout": 0,
"instructions": [
{
"OFPInstructionActions": {
"actions": [
{
"OFPActionOutput": {
"len": 16,
"max_len": 65535,
4294967293,
"type": 0
}
}
],
"len": 24,
"type": 4
}
}
],
"length": 80,
"match": {
"OFPMatch": {
"length": 4,
"oxm_fields": [],
"type": 1
}
},
"packet_count": 2,
"priority": 0,
"table_id": 0
}
}
],
"flags": 0,
"type": 1
}
}
]
Thanks,
Iwase
Hi there. That is fantastic. Sounds exactly like what
I am looking for so thank you.
One last question for the minute. I know you provided
a link but how do you implement this with custom Ryu controller code?
My apologies if I am asking something really obvious.
Cheers
Douglas
On 7 June 2017 at 01:15, Fujimoto Satoshi
Hi, Douglas
Ryu has ofctl_rest.py, which is a sample
application and provides REST API to get flow statistics.
http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>>>
I think it is better to use ofctl_rest.py than to
implement your own REST API in your app.
Thanks,
Fujimoto
Greetings I am a PhD student new to both Python
and Ryu and I was wondering if anyone could give me some advice.
I am using the Ryu controller program
(L2DestForwardStaticRyu.py) provided by Dr Grey Bernstein
(https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>>>) for
shortest path computation for a full Mesh network in Mininet but the example provided does
not include REST which I require to be able to collect flow statistics such as the flows in
each router,
bandwidth, latency, etc.
Unfortunately I have been looking and with the
exception of (https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>>>) which seems
overly specific, I am unable to find a good example that would
allow me to work out how to integrate REST into the above Ryu control program.
So if anyone can point me in the right direction
or can provide some examples, I would be most grateful.
Thank you for your time.
Best Regards
Douglas
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University
of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers'
Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of
the world's most
engaging tech sites, Slashdot.org!
http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of
Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building,
Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the
world's most
engaging tech sites, Slashdot.org!
http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building,
Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland
Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road,
Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton,
Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton,
Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot

------------------------------

Subject: Digest Footer

_______________________________________________
Ryu-devel mailing list
Ryu-***@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel


------------------------------

End of Ryu-devel Digest, Vol 67, Issue 62
*****************************************
Iwase Yusuke
2017-06-30 00:24:50 UTC
Permalink
Hi,

Please try to unsubscribe from here.
https://sourceforge.net/projects/ryu/lists/ryu-devel/unsubscribe

Thanks,
Iwase
如何取消,英文不太好,请协助,谢谢。
2017-06-26
----------------------------------------------------------------------------------------------------
*刘计平 Jiping Liu*
***************************
**QQ:379779868**
**手**机:13161901463*
----------------------------------------------------------------------------------------------------
*发送时间:*2017-06-26 08:17
*主题:*Ryu-devel Digest, Vol 67, Issue 62
*抄送:*
Send Ryu-devel mailing list submissions to
To subscribe or unsubscribe via the World Wide Web, visit
https://lists.sourceforge.net/lists/listinfo/ryu-devel
or, via email, send a message with subject or body 'help' to
You can reach the person managing the list at
When replying, please edit your Subject line so it is more specific
than "Re: Contents of Ryu-devel digest..."
1. Re: List to .csv in "port stats" (Sergio Silva)
2. List to .csv in "port stats" (Sergio Silva)
3. Re: Ryu Controller Question (Iwase Yusuke)
4. Re: Adding REST to Ryu (Iwase Yusuke)
----------------------------------------------------------------------
Message: 1
Date: Sun, 25 Jun 2017 09:25:03 -0300
Subject: Re: [Ryu-devel] List to .csv in "port stats"
Content-Type: text/plain; charset="utf-8"
Dear friend,
Please, I would like to know if there is a possibility that the "port
stats" files could be modified from list to default ".csv". This my
suggestion is due to the fact that the standard "Comma-Separated Values"
are files are widely used with numpy, pandas, database and others. For
scientific analysis, statistical surveys with prediction and artificial
intelligence. I think if Ryu would have a lot more to offer if the
collected files had the format ".csv" than a list. I thank you.
Post by 13161901463
Dear friend,
Please, I would like to know if there is a possibility that the "port
stats" files could be modified from list to default ".csv". This my
suggestion is due to the fact that the standard "Comma-Separated Values"
are files are widely used with numpy, pandas, database and others. For
scientific analysis, statistical surveys with prediction and artificial
intelligence. I think if Ryu would have a lot more to offer if the
collected files had the format ".csv" than a list. I thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
------------------------------
Message: 2
Date: Sun, 25 Jun 2017 09:03:06 -0300
Subject: [Ryu-devel] List to .csv in "port stats"
Content-Type: text/plain; charset="utf-8"
Dear friend,
Please, I would like to know if there is a possibility that the "port
stats" files could be modified from list to default ".csv". This my
suggestion is due to the fact that the standard "Comma-Separated Values"
are files are widely used with numpy, pandas, database and others. For
scientific analysis, statistical surveys with prediction and artificial
intelligence. I think if Ryu would have a lot more to offer if the
collected files had the format ".csv" than a list. I thank you.
-------------- next part --------------
An HTML attachment was scrubbed...
------------------------------
Message: 3
Date: Mon, 26 Jun 2017 08:56:20 +0900
Subject: Re: [Ryu-devel] Ryu Controller Question
Content-Type: text/plain; charset=utf-8; format=flowed
Hi Hosseini,
Yes, we welcome your questions!
https://github.com/osrg/ryu#support
http://dir.gmane.org/gmane.network.ryu.devel
Thanks,
Iwase
Post by 13161901463
Hello
My Name is Farshad Hosseini From Iran. I am working on my Master Thesis.
I have some questions about this controller.
May i ask them here?
Thank you
Best wishes
Hosseini
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------
Message: 4
Date: Mon, 26 Jun 2017 09:17:16 +0900
Subject: Re: [Ryu-devel] Adding REST to Ryu
Content-Type: text/plain; charset=utf-8; format=flowed
Hi Douglas,
Post by 13161901463
Hi again. My apologies but I seem to be stuck.
Few questions:-
1) Do I need to create a file called user_flags.py ? I cannot locate one in my version of Ryu or do
I need to update my version of Ryu?
To enable "--user-flags" option, please update Ryu with the latest Git source from GitHub, first.
And user_flags.py is supposed to be created by user, so not included in Ryu source.
Post by 13161901463
2) Are all the commands issues via the terminal?
Which "commands" you mean?
The following commands? If so, yes.
# Create user_flogs.py including sample configurations
$ cat <<EOF >user_flags.py
from ryu import cfg
CONF = cfg.CONF
CONF.register_cli_opts([
cfg.StrOpt(
'user-cli-opt', default=None,
help='user original CLI option'),
])
EOF
Thanks,
Iwase
Post by 13161901463
Apologies if I am asking really obvious stuff.
Thanks again,
Douglas
Hi again. I will see how I get on with the instructions you have sent. Regardless of what
happens, I will update you.
Cheers
Douglas
Hi,
Thanks, we are waiting for your report.
FYI, with the following patch, "--user-flags" option for adding your own CLI options
without modification and re-installing, but please note this patch has not be merged
into upstream yet.
This feature should be included in next release on early next month, I guess.
https://sourceforge.net/p/ryu/mailman/ryu-devel/thread/1497504689-15184-2-git-send-email-iwase.yusuke0%40gmail.com/#msg35895311
<https://sourceforge.net/p/ryu/mailman/ryu-devel/thread/1497504689-15184-2-git-send-email-iwase.yusuke0%40gmail.com/#msg35895311>
Thanks,
Iwase
Hi again. Ok, can you talk me through the second part, lets try that and see what
happens. Assuming of course it is still relevant after what we have already tried.
"So If you want to define your own CLI option,
0. Checkout Ryu Git src (if needed).
$ git clone https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>>>
$ cd ryu
1. Add your definitions into "ryu/flags.py".
The syntax is the same as "oslo.config".
https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>>
2. Re-install Ryu at the top of Ryu directory.
$ pip install -r tools/pip-requires
$ python setup.py install
3. Confirm your own option is inserted into ryu-manager.
$ ryu-manager --help"
Cheers
Douglas
Hi Douglas,
Hi again. Apologies for the delay in responding and thank you for getting back to
me so quickly.
I finally figured out what you were telling me. So, below is what I found for each
step of the first thing you suggested.
After using "Python #" to enter the interactive interpreter I typed "import ryu"
and I received no errors, it just went to a new line with this ">>>".
For "ryu.version", it told me my version is 4.12.
For "ryu.app import ofctl_rest", and I I received no errors, it just went to a new
line with this ">>>".
Good, it seems Ryu is installed as expected.
Then, it is weired to show the following "AttributeError"...
AttributeError: 'module' object has not attribute "ofctl_rest"
"manager.main(args=['ryu.app.ofctl_rest'] + sys.argv)" will try to load "ofctl_rest"
from "ryu.app", but "ryu.app import ofctl_rest" does not return any error...
Thanks,
Iwase
Cheers
Douglas
Hi Douglas,
Hello again. Ok, My apologies bit I really need you to simplify this for me.
Starting with the first bit.
1) Ryu is definitely installed but do you know the command to check the
version? I have looked online but I can't find anything specific.
2) Is there also a way to check that Ryu is installed correctly?
3) What do you mean by "import ryu" and "ryu.version"?
4) Also, "from ryu.app import ofctl_rest"?
The commands I wrote on the previous mail can check these points.
"python" command on your shell starts Python interpreter with "Interactive Mode"
https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>>
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode
<https://docs.python.org/2/tutorial/interpreter.html#interactive-mode>>>
"import ryu" and followed by other words are command (source code) for Python
interactive interpreter.
- "import ryu" checks whether Ryu is installed correctly or not.
- "ryu.version" shows version (e.g., '4.14').
- "from ryu.app import ofctl_rest" checks whether "ofctl_rest" can be imported
from your Python or not.
$ python # start Python interactive interpreter
import ryu # checks if "ryu" is installed or not
ryu.version # show version info
'4.14'
from ryu.app import ofctl_rest # Can import "ofctl_rest"?
Thanks,
Iwase
I will see if I can work through this first to see if I can get it working
this way before I look at the second bit. :D
Thank you for your time and patience so far.
Cheers
Douglas
Hi Douglas,
'module' object has not attribute "ofctl_rest" but it was worth trying so thank you.
Hmmm... 'ryu.app.ofctl_rest' means the Python module path to Ryu's
built-in app.
If it got AttributeError, Ryu might not be installed successfully.
I recommend you to confirm Ryu is installed
$ python
import ryu # Can import "ryu"?
ryu.version # Which version?
'4.14'
from ryu.app import ofctl_rest # Can import "ofctl_rest"?
Regarding the instructions you sent me for altering Ryu, is there any
chance you could explain them a bit more please? I am having a little trouble following them
currently.
Sure.
Ryu defines the CLI options in some modules, the most accessible among
them is
"ryu/flags.py", I guess.
https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>
<https://github.com/osrg/ryu/blob/master/ryu/flags.py
<https://github.com/osrg/ryu/blob/master/ryu/flags.py>>>>
But to reflect your changes, you need to "re-install" Ryu before running your
applications.
So If you want to define your own CLI option,
0. Checkout Ryu Git src (if needed).
$ git clone https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git> <https://github.com/osrg/ryu.git
<https://github.com/osrg/ryu.git>>>>
$ cd ryu
1. Add your definitions into "ryu/flags.py".
The syntax is the same as "oslo.config".
https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>
<https://docs.openstack.org/developer/oslo.config/
<https://docs.openstack.org/developer/oslo.config/>>>>
2. Re-install Ryu at the top of Ryu directory.
$ pip install -r tools/pip-requires
$ python setup.py install
3. Confirm your own option is inserted into ryu-manager.
$ ryu-manager --help
Thanks,
Iwase
Thank you :)
Douglas
Hi Douglas,
Hmmm... how about swapping the order of arguments?
e.g)
manager.main(args=['ryu.app.ofctl_rest'] + sys.argv)
FYI, I guess Dr.Bernstein did "hack"(used "ryu.cmd.manager"
directly) in order to
add original CLI option like "--netfile" and "--widest_paths".
On the other hand, you can add your original CLI option as following.
$ git diff
diff --git a/ryu/flags.py b/ryu/flags.py
index 69eb3d2..ebf16c8 100644
--- a/ryu/flags.py
+++ b/ryu/flags.py
@@ -112,3 +112,10 @@ CONF.register_cli_opts([
help='Initial Router ID used by Zebra protocol service '
'(default: %s)' % DEFAULT_ZSERV_ROUTER_ID),
], group='zapi')
+
+CONF.register_cli_opts([
+ cfg.StrOpt(
+ 'netfile', default=None, help='network json file'),
+ cfg.BoolOpt(
+ 'widest_paths', default=False, help='Use widest path.'),
+])
Please note you need to re-install Ryu after the above modifications.
$ python setup.py install
Then, with this modification, you can run
"l2DestForwardStaticRyu.py" as the
$ ryu-manager --help
...(snip)...
--netfile NETFILE network json file
...(snip)...
--widest_paths Use widest path.
...(snip)...
$ ryu-manager l2DestForwardStaticRyu.py ryu.app.ofctl_rest
--netfile=ExNetwithLoops1A.json --widest_paths
Thanks,
Iwase
Hi Iwase and thank you for getting back to me. The author of this
program, Dr Bernstein added this line "from ryu.cmd import manager" which as far as I
understand directly starts Ryu from within side L2DestForwardStaticRyu.py. Should be around
line 29 I think. He had to do this he told me because he could not start the program in the
conventional way because he needed to import the "ExNetwithLoops!A.json file" for the
topology with static mac and IP addresses. Apparently he could not do this just using the
standard Ryu format of starting the Ryu Manager with the Controller file and then with REST.
I tried your suggestion by removing "manager.main(args=sys.argv)"
from " if __name__ == "__main__": "
and using the following:-
"manager.main(args=sys.argv + ['ryu.app.ofctl_rest'])" and I got
the following error message in the terminal.
ryu.app.ofctl_rest"
Any advice would be welcome. I am obviously going to see what I
can find here and will let you know if I find anything relevant.
Cheers
Douglas
Hi Douglas,
I checked "L2DestForwardStaticRyu.py", and it seems to be
"hacked" to run
app without "ryu-manager".
To start the built-in Ryu application with
"L2DestForwardStaticRyu.py",
how about the following?
The following appends to "ofctl_rest" app to the argument of
"manager".
- manager.main(args=sys.argv)
+ manager.main(args=sys.argv + ['ryu.app.ofctl_rest'])
Thanks,
Iwase
Hi Iwase. Thank you for contacting me and apologies for my
delay in responding. I have tried what you have suggested but the problem I have is that the
L2DestForwardStaticRyu.py program is designed to run on its own. It imports the the ryu.cmd
import manager and uses the Ryu controller but you start it by typing "|python
l2DestForwardStaticRyu.py --netfile=ExNetwithLoops1A.json" |where it imports
=ExNetWithLoops1A.Json.
When this program is started, it automatically loads Ryu
and implements the code within this program. I am not sure how to start the this and
ryu.app.ofctl_rest at the same time. I have tried starting them separately in different
terminals but that did not work.
Thank you also for the information you have sent. I have
looked at it before but I do not know how to implement this with my custom code. I have been
looking for examples but they seem to be few and far between. Any advice as always would be
greatly appreciated.
Thanks again.
Douglas
On 8 June 2017 at 01:27, Iwase Yusuke
Hi Douglas,
Excuse me for cutting in.
Just for getting flow statistics, how about running
your app and ofctl_rest
together as Fujimoto said.
e.g.)
$ ryu-manager your_app.py ryu.app.ofctl_rest
If you want to implement your own REST APIs on your
app, Ryu-Book is the
most helpful as far as I know.
(You might already be aware of this though...)
http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>
<http://osrg.github.io/ryu-book/en/html/rest_api.html
<http://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>>
FYI, here is an sample implementation on
simple_switch_13.py for getting
flow statistics.
The usage of "WSGI" framework is described on Ryu-Book.
$ git diff
diff --git a/ryu/app/simple_switch_13.py
b/ryu/app/simple_switch_13.py
index 3e7c598..f33e474 100644
--- a/ryu/app/simple_switch_13.py
+++ b/ryu/app/simple_switch_13.py
@@ -13,6 +13,8 @@
# See the License for the specific language governing
permissions and
# limitations under the License.
+import json
+
from ryu.base import app_manager
from ryu.controller import ofp_event
from ryu.controller.handler import CONFIG_DISPATCHER,
MAIN_DISPATCHER
@@ -21,14 +23,26 @@ from ryu.ofproto import ofproto_v1_3
from ryu.lib.packet import packet
from ryu.lib.packet import ethernet
from ryu.lib.packet import ether_types
+from ryu.app.ofctl import api as ofctl_api
+from ryu.app.wsgi import ControllerBase
+from ryu.app.wsgi import Response
+from ryu.app.wsgi import route
+from ryu.app.wsgi import WSGIApplication
+
+
+_URI_PREFIX = '/simpleswitch/stats/{dpid}'
OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
+ _CONTEXTS = {'wsgi': WSGIApplication}
super(SimpleSwitch13, self).__init__(*args,
**kwargs)
self.mac_to_port = {}
+ wsgi = kwargs['wsgi']
+ wsgi.register(SimpleSwitchController,
+ {SimpleSwitch13.__name__: self})
@set_ev_cls(ofp_event.EventOFPSwitchFeatures,
CONFIG_DISPATCHER)
@@ -117,3 +131,32 @@ class
out = parser.OFPPacketOut(datapath=datapath,
buffer_id=msg.buffer_id,
in_port=in_port,
actions=actions, data=data)
datapath.send_msg(out)
+
+ datapath = ofctl_api.get_datapath(self, dpid)
+ return None
+
+ parser = datapath.ofproto_parser
+ req = parser.OFPFlowStatsRequest(datapath)
+
+ rep = ofctl_api.send_msg(
+ app=self, msg=req,
+ reply_cls=parser.OFPFlowStatsReply,
reply_multi=True)
+ return [r.to_jsondict() for r in rep]
+
+
+
+ super(SimpleSwitchController,
self).__init__(req, link, data, **config)
+ self.simple_switch_app =
data[SimpleSwitch13.__name__]
+
+ dpid = int(str(kwargs['dpid']))
+ ret = self.simple_switch_app.get_flow_stats(dpid)
+ return Response(status=404)
+
+ return
Response(content_type='application/json', body=json.dumps(ret))
$ ryu-manager ryu/app/simple_switch_13.py
Registered VCS backend: git
Registered VCS backend: hg
Registered VCS backend: svn
Registered VCS backend: bzr
loading app ryu/app/simple_switch_13.py
loading app ryu.controller.ofp_handler
loading app ryu.app.ofctl.service
loading app ryu.controller.ofp_handler
creating context wsgi
instantiating app ryu.app.ofctl.service of OfctlService
instantiating app ryu/app/simple_switch_13.py of
SimpleSwitch13
instantiating app ryu.controller.ofp_handler of OFPHandler
(10332) wsgi starting up on http://0.0.0.0:8080
...
$ curl -X GET
http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>>>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1 <http://localhost:8080/simpleswitch/stats/1>>
<http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>> <http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>
<http://localhost:8080/simpleswitch/stats/1
<http://localhost:8080/simpleswitch/stats/1>>>>>>> | python -m json.tool
[
{
"OFPFlowStatsReply": {
"body": [
{
"OFPFlowStats": {
"byte_count": 140,
"cookie": 0,
"duration_nsec": 771000000,
"duration_sec": 1,
"flags": 0,
"hard_timeout": 0,
"idle_timeout": 0,
"instructions": [
{
"OFPInstructionActions": {
"actions": [
{
"OFPActionOutput": {
"len": 16,
"max_len": 65535,
4294967293,
"type": 0
}
}
],
"len": 24,
"type": 4
}
}
],
"length": 80,
"match": {
"OFPMatch": {
"length": 4,
"oxm_fields": [],
"type": 1
}
},
"packet_count": 2,
"priority": 0,
"table_id": 0
}
}
],
"flags": 0,
"type": 1
}
}
]
Thanks,
Iwase
Hi there. That is fantastic. Sounds exactly like what
I am looking for so thank you.
One last question for the minute. I know you provided
a link but how do you implement this with custom Ryu controller code?
My apologies if I am asking something really obvious.
Cheers
Douglas
On 7 June 2017 at 01:15, Fujimoto Satoshi
Hi, Douglas
Ryu has ofctl_rest.py, which is a sample
application and provides REST API to get flow statistics.
http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html
<http://ryu.readthedocs.io/en/latest/app/ofctl_rest.html>>>>>>>>
I think it is better to use ofctl_rest.py than to
implement your own REST API in your app.
Thanks,
Fujimoto
Greetings I am a PhD student new to both Python
and Ryu and I was wondering if anyone could give me some advice.
I am using the Ryu controller program
(L2DestForwardStaticRyu.py) provided by Dr Grey Bernstein
(https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu
<https://www.grotto-networking.com/SDNfun.html#programming-switches-with-ryu>>>>>>>>) for
shortest path computation for a full Mesh network in Mininet but the example provided does
not include REST which I require to be able to collect flow statistics such as the flows in
each router,
bandwidth, latency, etc.
Unfortunately I have been looking and with the
exception of (https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>
<https://osrg.github.io/ryu-book/en/html/rest_api.html
<https://osrg.github.io/ryu-book/en/html/rest_api.html>>>>>>>>) which seems
overly specific, I am unable to find a good example that would
allow me to work out how to integrate REST into the above Ryu control program.
So if anyone can point me in the right direction
or can provide some examples, I would be most grateful.
Thank you for your time.
Best Regards
Douglas
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University
of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers'
Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of
the world's most
engaging tech sites, Slashdot.org!
http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of
Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building,
Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the
world's most
engaging tech sites, Slashdot.org!
http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building,
Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland
Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road,
Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton,
Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton,
Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
<https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
<https://lists.sourceforge.net/lists/listinfo/ryu-devel>
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
--
*Douglas Harewood-Gill MSc MIET*
CDT Student in Communications (PhD), University of Bristol
Post-Graduate Student (Taught and Research)
*
CDT Communications*
University of Bristol, Merchant Venturers' Building, Woodland Road, Clifton, Bristol. BS8 1UB
http://www.bristol.ac.uk/
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
------------------------------
Subject: Digest Footer
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
------------------------------
End of Ryu-devel Digest, Vol 67, Issue 62
*****************************************
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Ryu-devel mailing list
https://lists.sourceforge.net/lists/listinfo/ryu-devel
Loading...