Hi Douglas,

On 2017年06月15日 23:55, Douglas Harewood-Gill wrote:
> 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

"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
> 
> 
> 
> 
> On 15 June 2017 at 01:06, Iwase Yusuke <iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com>> wrote:
> 
>     Hi Douglas,
> 
> 
>     On 2017年06月14日 21:41, Douglas Harewood-Gill wrote:
>     > Hi Iwase. I did try it the other way but the error "AttributeError: 
> '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>
> 
>     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>
>           $ 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/>
>      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
>     >
>     > On 14 June 2017 at 03:24, Iwase Yusuke <iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com> <mailto:iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com>>> wrote:
>     >
>     >     Hi Douglas,
>     >
>     >     Hmmm... how about swapping the order of arguments?
>     >
>     >     e.g)
>     >     if __name__ == "__main__":
>     >         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
>     >     standard Ryu application via "ryu-manager":
>     >
>     >     $ 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
>     >
>     >
>     >     On 2017年06月13日 22:04, Douglas Harewood-Gill wrote:
>     >     > 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.
>     >     >
>     >     > "l2DestForwardStaticRyuNS: error: unrecognized arguments: 
> 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
>     >     >
>     >     >
>     >     >
>     >     >
>     >     > On 13 June 2017 at 02:17, Iwase Yusuke <iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com> <mailto:iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com>> <mailto:iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com> <mailto:iwase.yusu...@gmail.com 
> <mailto:iwase.yusu...@gmail.com>>>> wrote:
>     >     >
>     >     >     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".
>     >     >
>     >     >     e.g.) around line 91:
>     >     >
>     >     >      if __name__ == "__main__":
>     >     >     -    manager.main(args=sys.argv)
>     >     >     +    manager.main(args=sys.argv + ['ryu.app.ofctl_rest'])
>     >     >
>     >     >
>     >     >     Thanks,
>     >     >     Iwase
>     >     >
>     >     >
>     >     >     On 2017年06月09日 21:00, Douglas Harewood-Gill wrote:
>     >     >     > 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 
> <iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>>> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com> 
> <mailto:iwase.yusu...@gmail.com <mailto:iwase.yusu...@gmail.com>>>>> wrote:
>     >     >     >
>     >     >     >     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>>>>
>     >     >     >
>     >     >     >
>     >     >     >     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}'
>     >     >     >
>     >     >     >
>     >     >     >      class SimpleSwitch13(app_manager.RyuApp):
>     >     >     >          OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]
>     >     >     >     +    _CONTEXTS = {'wsgi': WSGIApplication}
>     >     >     >
>     >     >     >          def __init__(self, *args, **kwargs):
>     >     >     >              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)
>     >     >     >          def switch_features_handler(self, ev):
>     >     >     >     @@ -117,3 +131,32 @@ class 
> SimpleSwitch13(app_manager.RyuApp):
>     >     >     >              out = parser.OFPPacketOut(datapath=datapath, 
> buffer_id=msg.buffer_id,
>     >     >     >                                        in_port=in_port, 
> actions=actions, data=data)
>     >     >     >              datapath.send_msg(out)
>     >     >     >     +
>     >     >     >     +    def get_flow_stats(self, dpid):
>     >     >     >     +        datapath = ofctl_api.get_datapath(self, dpid)
>     >     >     >     +        if datapath is None:
>     >     >     >     +            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]
>     >     >     >     +
>     >     >     >     +
>     >     >     >     +class SimpleSwitchController(ControllerBase):
>     >     >     >     +
>     >     >     >     +    def __init__(self, req, link, data, **config):
>     >     >     >     +        super(SimpleSwitchController, 
> self).__init__(req, link, data, **config)
>     >     >     >     +        self.simple_switch_app = 
> data[SimpleSwitch13.__name__]
>     >     >     >     +
>     >     >     >     +    @route('simpleswitch', _URI_PREFIX, 
> methods=['GET'])
>     >     >     >     +    def list_mac_table(self, req, **kwargs):
>     >     >     >     +        dpid = int(str(kwargs['dpid']))
>     >     >     >     +        ret = 
> self.simple_switch_app.get_flow_stats(dpid)
>     >     >     >     +        if ret is None:
>     >     >     >     +            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>>>> | 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,
>     >     >     >                                                     "port": 
> 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
>     >     >     >
>     >     >     >
>     >     >     >     On 2017年06月07日 20:21, Douglas Harewood-Gill wrote:
>     >     >     >     > 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 
> <satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>>> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>>>> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com>>> 
> <mailto:satoshi.fujimo...@gmail.com <mailto:satoshi.fujimo...@gmail.com> 
> <mailto:satoshi.fujimo...@gmail.com
>     <mailto:satoshi.fujimo...@gmail.com>> <mailto:satoshi.fujimo...@gmail.com 
> <mailto:satoshi.fujimo...@gmail.com> <mailto:satoshi.fujimo...@gmail.com 
> <mailto:satoshi.fujimo...@gmail.com>>>>>> wrote:
>     >     >     >     >
>     >     >     >     >     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>>>>>
>     >     >     >     >
>     >     >     >     >     I think it is better to use ofctl_rest.py than to 
> implement your own REST API in your app.
>     >     >     >     >
>     >     >     >     >     Thanks,
>     >     >     >     >     Fujimoto
>     >     >     >     >
>     >     >     >     >
>     >     >     >     >     On 2017年06月06日 21:18, Douglas Harewood-Gill wrote:
>     >     >     >     >>
>     >     >     >     >>     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>>>>>)
>  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>>>>>) 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)
>     >     >     >     >>     e-mail: douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk
>     <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>>>>
>     >     >     >     >>
>     >     >     >     >>     *
>     >     >     >     >>     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
>     >     >     >     >>     Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net
>     <mailto:Ryu-devel@lists.sourceforge.net>>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>>>>
>     >     >     >     >>     
> https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>>>
>     <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <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)
>     >     >     >     > e-mail: douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk
>     <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>>>>
>     >     >     >     >
>     >     >     >     > *
>     >     >     >     > 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
>     >     >     >     > Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>>>
>     >     >     >     > 
> https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <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)
>     >     >     > e-mail: douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>>>
>     >     >     >
>     >     >     > *
>     >     >     > 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
>     >     >     > Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>>
>     >     >     > https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel>> 
> <https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <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)
>     >     > e-mail: douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>>
>     >     >
>     >     > *
>     >     > 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
>     >     > Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net> 
> <mailto:Ryu-devel@lists.sourceforge.net 
> <mailto:Ryu-devel@lists.sourceforge.net>>
>     >     > https://lists.sourceforge.net/lists/listinfo/ryu-devel 
> <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)
>     > e-mail: douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk> 
> <mailto:douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>>
>     >
>     > *
>     > 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
>     > Ryu-devel@lists.sourceforge.net <mailto:Ryu-devel@lists.sourceforge.net>
>     > 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)
> e-mail: douglas.harewood-g...@bristol.ac.uk 
> <mailto:douglas.harewood-g...@bristol.ac.uk>
> 
> *
> 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
> Ryu-devel@lists.sourceforge.net
> 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
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to