summaryrefslogtreecommitdiffhomepage
AgeCommit message (Collapse)Author
2012-07-31add IPPROTO_SCTP constantFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-31rename ryu/ofproto/in.py to ryu/ofproto/inet.pyFUJITA Tomonori
Avoid a reserved word. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-31test: specify OF version in integrated test suiteFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-30Add SubmittingPatches docFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-30Ryu 1.1FUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-30of1.2: handle unknown match field properlyFUJITA Tomonori
Ryu crashes when it finds an unknown match field in OFPMatch. Instead, Ryu should just ignore it and continue to parse. With this patch, Ryu uses OFPmatchField class for an unknown match field and continue to parse. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Tested-by: Simon Horman <horms@verge.net.au>
2012-07-28test: simplify integrated OVS test suiteFUJITA Tomonori
This patch simplifies integrated OVS test suite. Currently, we wait for a barrier response before moving to the next test. However, we don't need. The logic works like the following: sending a flow mod (deleting all the flows) sending a barrier sending a flow mod (set up a flow to test) sending a barrier sending a flow stats Then the reply handler for flow stats verifies the result and move to the next. You can run a test suite like: $ ryu-manager ~/git/ryu/ryu/tests/integrated/test_add_flow_v12_actions.py We can try two more suites: ryu/tests/integrated/test_add_flow_v10.py ryu/tests/integrated/test_add_flow_v12_matches.py Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-26test: add more of1.2 unittestsFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-26of1.2: fix IPv6 match parsersFUJITA Tomonori
Fix the folloing problem in MTIPv6Src, MTIPv6Src, MTIPv6Dst, and MTIPv6NdTarget's parsers: File "/home/openflow/ryu/ryu/ofproto/ofproto_v1_2_parser.py", line 1705, in parser field = OFPMatchField.parser(buf, offset) File "/home/openflow/ryu/ryu/ofproto/ofproto_v1_2_parser.py", line 1934, in parser field = cls_.field_parser(header, buf, offset) File "/home/openflow/ryu/ryu/ofproto/ofproto_v1_2_parser.py", line 1949, in field_parser (value,) = struct.unpack_from(cls.pack_str, buf, offset + 4) ValueError: too many values to unpack Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-25of1.2: make set_metadata implementation consistent with the restFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-25of1.2: fix OFPExperimenter parserFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-24of1.2: fix Instruction parserFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-24of1.2: add OXM_OF_METADATA supportSimon Horman
Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-20fix 475ca44ef4f87b00945ccd5be8ee4ab196c4e86f regressionFUJITA Tomonori
Needs __init__.py Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-20test: add integrated OVS test suiteFUJITA Tomonori
This patch adds a test framework with OVS to test various matches and actions; adding various matches and actions and check `ovs-ofctl dump-flows' output. First, create 'br-tester' bridge: fujita@rose:~$ sudo ovs-vsctl add-br br-tester Secondly, configure the bridge to use the local controller: fujita@rose:~$ sudo ovs-vsctl set-controller br-tester tcp:127.0.0.1 Thirdly, run what you want to test. If you want to try adding flows on OF1.0: fujita@rose:~$ ryu-manager --verbose --run_test_mod ryu.tests.integrated.test_add_flow_v10 ryu.tests.integrated.tester This patch adds three test sets: ryu.tests.integrated.test_add_flow_v10 ryu.tests.integrated.test_add_flow_v12_actions ryu.tests.integrated.test_add_flow_v12_matches Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-19of1.2: fix OFPPortStatsRequest typoFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-19of1.2: OFPGroupMod and OFPGroupFeaturesStatsFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-19simple_switch: remove outside module dependenceFUJITA Tomonori
simple_switch is a a learing material (who uses this in production?). It should be the simple learning switch code like one in OpenFlow tutorial. It's easier for learniners if simple_switch doesn't use the outside modules. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-18cbench: specify OF1.0FUJITA Tomonori
cbench works with only OF1.0 and OF1.0 provides all cbench needs. So specify OF1.0. Also it doesn't need nxm so use OFPMatch and OFPFlowMod. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Reviewed-by: Isaku Yamahata <yamahata@valinux.co.jp>
2012-07-18simple_switch: specify OF1.0FUJITA Tomonori
simple_switch works with only OF1.0 and OF1.0 provides all simple_switch needs. So specify OF1.0. simple_switch doesn't need nxm so use OFPMatch and OFPFlowMod (and avoid the helper functions). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-17stop import ofproto_v1_0 as ofprotoFUJITA Tomonori
'from . import ofproto_v1_0 as ofproto' in ryu/ofproto/__init__.py is a wrong assumption. We need to remove it. This introduces ryu/ofproto/ofproto_common.py including only constatns that OF version independent code must use. Note that I don't move data structures there that multiple OF versions can share (like OVS does). Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-17nxm: remove import ofprotoFUJITA Tomonori
Use ofproto_v1_0 explicitly instead. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-17of1.2: OFPMatch serialiser: fix ARP_SPA, ARP_TPA and IPV6_FLABEL maskingSimon Horman
* In the case of ARP_SPA, ARP_TPA and IPV6_FLABEL a masked match should be used unless the mask is all ones. Previously a non-masked matched was used in the case were the mask was zero, leading to the value being unmasked, whereas in should be completely masked out. * An un-masked IPV6_FLABEL should internally use a mask of UINT32_MAX Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-17simple_switch: fix port_status_handlerKAWAI Hiroaki
port_no is not a member of msg, but a member of msg.desc. Signed-off-by: Hiroaki KAWAI <kawai@stratosphere.co.jp> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-17of1.2: add OFPSF_REPLY_MORE constantFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-17of1.2: remove unused mask in MTEthTypeFUJITA Tomonori
EthType doesn't support mask. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-16enable applications to specify OF versionsFUJITA Tomonori
Some applications need to use particular OF versions. With this patch, applications can specify OF versions in the following way: class YourApplication(app_manager.RyuApp): OFP_VERSIONS = [ofproto_v1_1.OFP_VERSION, ofproto_v1_2.OFP_VERSION] Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Reviewed-by: Isaku Yamahata <yamahata@valinux.co.jp>
2012-07-14of1.2: add OFPQueuePropMinRate and OFPQueuePropMaxRateFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-13nxm: fix nxm to OFPMatch conversionFUJITA Tomonori
This fixes a bug that the conversion ignores dl_dst. Soheil Hassas Yeganeh reported a problem about simple_isolation: The problem is that the isolation service tries to install flow-entries for a specific src and dst (in SimpleIsolation._modflow_and_send_packet), but instead the nx match code installs flow-entries only with src addresses and ignores the dst. So, when I boot multiple vms, only one of them is reachable. For instance, assume that you have two VM's A and B. When a packet comes from the gw to A, it installs "gw->A: A's port", but the acutal installed rule is "gw: A's port". This works for A, but, when you boot B, it tries to install "gw->B: B's port", but the acutal rule to be installed is "gw: B's port". So, it always connect the gateway to only one VM at a time. Reported-by: Soheil Hassas Yeganeh <soheil@cs.toronto.edu> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Reviewed-by: Soheil Hassas Yeganeh <soheil@cs.toronto.edu>
2012-07-13of1.2: fix OFPGroupMod serializeFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp> Reviewed-by: Simon Horman <horms@verge.net.au>
2012-07-12of1.2: OFPSetField serializer pads too muchIsaku Yamahata
The calculation of padding size was wrong. Calculate correct padding size. Following the sample frame. 0000 00 23 5d 76 13 c2 00 26 b9 76 5c 81 08 00 45 00 0010 00 a4 43 8b 40 00 40 06 5e c0 ac 10 03 21 ac 11 0020 3c c6 19 e9 ae 7a 18 cf dd ef d7 26 45 ec 80 18 0030 00 7a 98 9f 00 00 01 01 08 0a 50 db 9e 5e 01 30 0040 7e 3d 03 0e 00 70 e4 f7 ea 88 Start of OF packet 00 00 00 00 00 00 0050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0060 00 00 ff ff ff ff ff ff ff ff ff ff ff ff 00 00 flags 0070 00 00 pad 00 01 00 0c 80 00 00 04 00 00 00 01 00 00 type len oxm_header value ofp_match in_port Start of matching Start of OXM TLV 0080 00 00 00 04 00 30 00 00 00 00 type len pad[4] apply_actions start of instruction 00 19 00 18 type len start of set_field 80 00 oxm_header oxm class 0090 08 06 ETH_SRC 22 22 22 22 22 22 00 00 00 00 00 00 00 00 <--Wrong padding- 00a0 00 00 ----> 00 00 00 10 00 00 00 02 05 dc 00 00 00 00 type len port maxlen start of ofp_action_output 00b0 00 00 Signed-off-by: Isaku Yamahata <yamahata@valinux.co.jp> Reviewed-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-12of1.2: fix OFPPacketIn parserFUJITA Tomonori
We need two bytes padding right after the match. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-08of1.2: fix MTIPv6NdTargetFUJITA Tomonori
AttributeError: 'MTIPv6NdTarget' object has no attribute 'mask Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-08of1.2: fix OFPActionPopVlan parserFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-07of1.2: fix OFPActionSetField paddingFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-07of1.2: fix vlan_vid matchFUJITA Tomonori
Fix the following error: File "/Users/fujita/git/ryu/ryu/ofproto/ofproto_v1_2_parser.py", line 1501, in serialize self.append_field(header, self.flow.vlan_vid, self.vlan_vid_mask) AttributeError: 'OFPMatch' object has no attribute 'vlan_vid_mask' Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06app/rest: fix value error exceptionYoshihiro Kaneko
This patch fixes value error exception. The datapath-id is given in hex. > Traceback (most recent call last): > File "/usr/lib/python2.7/dist-packages/gevent/pywsgi.py", line 438, > in handle_one_response > self.run_application() > File "/usr/lib/python2.7/dist-packages/gevent/pywsgi.py", line 424, > in run_application > self.result = self.application(self.environ, self.start_response) > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line > 130, in __call__ > resp = self.call_func(req, *args, **self.kwargs) > File "/usr/local/lib/python2.7/dist-packages/webob/dec.py", line > 195, in call_func > return self.func(req, *args, **kwargs) > File "/opt/stack/ryu/ryu/app/wsgi.py", line 81, in __call__ > return controller(req) > File "/opt/stack/ryu/ryu/app/wsgi.py", line 52, in __call__ > return getattr(self, action)(req, **kwargs) > File "/opt/stack/ryu/ryu/app/rest.py", line 104, in create > self.nw.create_port(network_id, int(dpid), int(port_id)) > ValueError: invalid literal for int() with base 10: '0000666a9c296241' Signed-off-by: Yoshihiro Kaneko <ykaneko0929@gmail.com> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: change IPv6 address representationFUJITA Tomonori
8H is more fitter than 4I for IPV6 address string representation. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: fix OFPActionSetFieldFUJITA Tomonori
Fix some alignment bugs. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: Correct pad calculation for OFPMatchSimon Horman
In the case where the match length is a multiple of 8 the pad should be 0. Previously a pad of 8 was used. Signed-off-by: Simon Horman <horms@verge.net.au> Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: fix OFPBucket parser and serialize methodsFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: fix OFAActionCopyTtlOut and OFPActionCopyTtlIn's parsersFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: fix OFPActionSetFieldFUJITA Tomonori
Parse and serialize OXM TLV. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: remove match argument in MT* class serialize methodFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: add the common serialize method for MT* classesFUJITA Tomonori
Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: make MT* class make method take value and maskFUJITA Tomonori
- MT* class serialize method doesn't need match argument so we can use MT* class for set_field action nicely. - we can create the common serialize method for most of MT* classes Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: set value and mask in MT* instanceFUJITA Tomonori
Set value and mask that the parser gets. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: remove unused parser method in MT* classesFUJITA Tomonori
Some MT* classes need the own parser though. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: add common field_parser for MT* classesFUJITA Tomonori
Most of MT* classes can use this helper classmethod. We get value and mask values but don't set them to an instance. It's done later. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>
2012-07-06of1.2: make pack_str class variableFUJITA Tomonori
So the parser classmethod can use it too. Signed-off-by: FUJITA Tomonori <fujita.tomonori@lab.ntt.co.jp>