Closing this one out...

Using Iwase's s suggestion, I've moved to the new API which allows me to
specify multiple match conditions (such as inport, eth_src etc) as follows:

kwargs = {}
kwargs['in_port'] = 4
kwargs['eth_src'] = 02:a3:33:b2:2d:21
match = parser.OFPMatch(**kwargs)

Thanks a bunch both Gandhimathi and Iwase!
-Ali

On Sat, Aug 15, 2015 at 9:39 AM, Iwase Yusuke <iwase.yusu...@gmail.com>
wrote:

> Hi,
>
> append_field() method is one of the "old" API for OFPMatch.
> With old API, you need to convert IP/MAC address (string type)into binary
> type.
>
> e.g.)
> >>> from ryu.lib import addrconv
> >>> from ryu.ofproto import ofproto_v1_3 as ofproto
> >>> from ryu.ofproto import ofproto_v1_3_parser as parser
> >>> m = parser.OFPMatch()
> >>> m.append_field(ofproto.OXM_OF_ETH_SRC, "02:a3:33:b2:2d:21")
> >>> m
> OFPMatch(oxm_fields={'eth_src': '30:32:3a:61:33:3a'})
> >>> m.append_field(ofproto.OXM_OF_ETH_SRC,
> addrconv.mac.text_to_bin("02:a3:33:b2:2d:21"))
> >>> m
> OFPMatch(oxm_fields={'eth_src': '02:a3:33:b2:2d:21'})
>
>
> I recommend you to use the new API for OFPMatch.
>
> e.g.)
> >>> from ryu.ofproto import ofproto_v1_3 as ofproto
> >>> from ryu.ofproto import ofproto_v1_3_parser as parser
> >>> m = parser.OFPMatch(eth_src="02:a3:33:b2:2d:21")
> >>> m
> OFPMatch(oxm_fields={'eth_src': '02:a3:33:b2:2d:21'})
> >>> kwargs = {'eth_src': '02:a3:33:b2:2d:21'}
> >>> m = parser.OFPMatch(**kwargs)
> >>> m
> OFPMatch(oxm_fields={'eth_src': '02:a3:33:b2:2d:21'})
>
> Thanks,
> Iwase
>
>
> On 2015年08月15日 11:33, Gandhimathi Velusamy wrote:
> > Hi,
> >
> > I just tried to modify the code simple_switch_13.py in app folder of ryu.
> >
> > When packet in happens,
> >    I tried to modify the eth_src of the packet coming from port 1 with
> the value "02:a3:33:b2:2d:21".
> > It is working for me.
> > Please, find attached the code and screen shot of Ryu output.
> > Inline images 1
> >
> > Thanks
> > Gandhimathi
> >
> >
> > On 14 August 2015 at 17:47, A Sydney <asydney...@gmail.com <mailto:
> asydney...@gmail.com>> wrote:
> >
> >     Oops.. Looks like I inadvertently dropped ryu-devel from the thread..
> >
> >     So below was correspondence between Gandhimathi and I (Ali).  Feel
> free to provide feedback...
> >
> >
> >     ### Gandhimathi  ###
> >
> >     Have you tried with set_field()?
> >     page 167 from https://media.readthedocs.org/pdf/ryu/latest/ryu.pdf
> >
> >
> >
> >     ### Ali ###
> >
> >     I've tried the following which works fine:
> >
> >     match = parser.OFPMatch(eth_dst="02:a3:33:b2:2d:21")
> >
> >     However, for my particular test case, I've got match conditions
> stored in a config file and when a switch starts up, I read the config file
> and install flows in the switch. Now my config file has things like:
> >
> >     inport = 1
> >     eth_src = "None"
> >     eth_dst = "02:a3:33:b2:2d:21"
> >
> >     And in my ryu application, I do something like (pseudo code):
> >
> >     match = parser.OFPMatch()
> >
> >     if inport != "None":
> >       match.append_field(ofproto.OXM_OF_IN_PORT, inport)
> >
> >     if eth_src != "None":
> >       match.append_field(ofproto.OXM_OF_ETH_SRC, eth_src)
> >
> >     if eth_dst != "None":
> >       match.append_field(ofproto.OXM_OF_ETH_SRC, eth_dst)
> >
> >     print "match:", match
> >
> >     match: 1,  02:a3:33:b2:2d:21
> >
> >     So if I don't have a value for a match condition (such as eth_src),
> I insert "None" in the config file. Then when I create my match, if "None"
> shows up for this parameter (like for eth_src), I don't add it to the match
> condition. The the point here is that I append fields (inport, eth_src etc)
> to the match condition iteratively. Hence, I can't use the form"match =
> parser.OFPMatch(eth_dst="02:a3:33:b2:2d:21""
> >
> >     ### Gandhimathi  ###
> >
> >     I understand what you are trying to do. May be the syntax you are
> using with match. append_field() is not correct? could you please, refer
> here:
> https://github.com/FlowForwarding/LINC-Switch/commit/4c9aa3ad5ad1250f8357e04a65773b409fbe4b4c.
> They used pointer data type to pass in append_field() method.
> >
> >
> >
> >     ### Ali ###
> >
> >     Per your suggest, below is what I attempted:
> >
> >     match = parser.OFPMatch()
> >
>  
> test=[(ofproto.OXM_OF_IN_PORT,4),(ofproto.OXM_OF_ETH_SRC,"02:a3:33:b2:2d:21")]
> >     for a in test:
> >         match.append_field(*a)
> >     print "matching:", match
> >
> >     matching: OFPMatch(oxm_fields={'eth_src': '30:32:3a:61:33:3a',
> 'in_port': 4})
> >
> >     As shown, the mac address still has the same weird format as before
> >
> >     I also tried the following:
> >
> >     match = parser.OFPMatch()
> >     match.set_in_port(4)
> >     match.set_dl_src("02:a3:33:b2:2d:21")
> >     print "matching:", match
> >
> >     matching: OFPMatch(oxm_fields={})
> >
> >     But as shown, the output is empty
> >
> >     REF:
> >     https://github.com/osrg/ryu/blob/master/ryu/app/rest_router.py#L1722
> >
> >     On Fri, Aug 14, 2015 at 2:13 PM, A Sydney <asydney...@gmail.com
> <mailto:asydney...@gmail.com>> wrote:
> >
> >         Any feedback?
> >
> >         On Wed, Aug 12, 2015 at 5:29 PM, A Sydney <asydney...@gmail.com
> <mailto:asydney...@gmail.com>> wrote:
> >
> >             Hi Ryu folks,
> >                                 This may be a trivial question...
> >
> >             I'm using ryu 3.23.2 on CentOS 6.6 (OF 1.3). As shown below,
> when I insert a mac address (02:a3:33:b2:2d:21), "appends_fields" seem to
> do something smart that results in "30:32:3a:61:33:3a" in "match" (as
> opposed to "02:a3:33:b2:2d:21").
> >
> >             # Ryu app
> >             match = parser.OFPMatch()
> >             match.append_field(ofproto.OXM_OF_ETH_SRC,
> "02:a3:33:b2:2d:21")
> >             print match
> >
> >             # Output
> >             OFPMatch(oxm_fields={'eth_src': '30:32:3a:61:33:3a'})
> >
> >             How do I get the original mac address (02:a3:33:b2:2d:21)
> inserted in "match"?
> >
> >             Thanks,
> >             Ali
> >
> >
> >
> >
> >
>  
> ------------------------------------------------------------------------------
> >
> >     _______________________________________________
> >     Ryu-devel mailing list
> >     Ryu-devel@lists.sourceforge.net <mailto:
> Ryu-devel@lists.sourceforge.net>
> >     https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> >
> >
> >
> > _______________________________________________
> > Ryu-devel mailing list
> > Ryu-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/ryu-devel
> >
>
------------------------------------------------------------------------------
_______________________________________________
Ryu-devel mailing list
Ryu-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ryu-devel

Reply via email to