Thanks, I pushed patches 2 and 3 to master.
On Thu, May 10, 2012 at 10:59:05AM -0700, Ethan Jackson wrote: > Looks good, thanks. > > Ethan > > On Wed, May 9, 2012 at 12:31 PM, Ben Pfaff <b...@nicira.com> wrote: > > Signed-off-by: Ben Pfaff <b...@nicira.com> > > --- > > tests/odp.at | 36 +++++++++++++++++++++++++++++++++--- > > tests/test-odp.c | 53 > > ++++++++++++++++++++++++++++++++++++++++++++++++++--- > > 2 files changed, 83 insertions(+), 6 deletions(-) > > > > diff --git a/tests/odp.at b/tests/odp.at > > index 90a1192..caedc94 100644 > > --- a/tests/odp.at > > +++ b/tests/odp.at > > @@ -1,6 +1,7 @@ > > AT_BANNER([datapath parsing and formatting]) > > > > -AT_SETUP([OVS datapath parsing and formatting - valid forms]) > > +AT_SETUP([OVS datapath key parsing and formatting - valid forms]) > > +dnl We could add a test for invalid forms, but that's less important. > > AT_DATA([odp-base.txt], [dnl > > in_port(1),eth(src=00:01:02:03:04:05,dst=10:11:12:13:14:15) > > in_port(1),eth(src=00:01:02:03:04:05,dst=10:11:12:13:14:15),eth_type(0x1234) > > @@ -55,8 +56,37 @@ sed -n 's/,frag=no),/,frag=first),/p' odp-base.txt > > echo '# Valid forms with IP later fragment.' > > sed -n 's/,frag=no),.*/,frag=later)/p' odp-base.txt) > odp.txt > > AT_CAPTURE_FILE([odp.txt]) > > -AT_CHECK_UNQUOTED([test-odp < odp.txt], [0], [`cat odp.txt` > > +AT_CHECK_UNQUOTED([test-odp parse-keys < odp.txt], [0], [`cat odp.txt` > > ]) > > AT_CLEANUP > > > > -dnl We could add a test for invalid forms, but that's less important. > > +AT_SETUP([OVS datapath actions parsing and formatting - valid forms]) > > +AT_DATA([actions.txt], [dnl > > +1,2,3 > > +userspace(pid=555666777) > > +userspace(pid=6633,sFlow(vid=9,pcp=7,output=10)) > > +userspace(pid=9765,slow_path()) > > +userspace(pid=9765,slow_path(cfm)) > > +userspace(pid=9765,slow_path(cfm,match)) > > +userspace(pid=9123,userdata=0x815309) > > +set(tun_id(0x7f10354)) > > +set(in_port(2)) > > +set(eth(src=00:01:02:03:04:05,dst=10:11:12:13:14:15)) > > +set(eth_type(0x1234)) > > +set(ipv4(src=35.8.2.41,dst=172.16.0.20,proto=5,tos=0x80,ttl=128,frag=no)) > > +set(tcp(src=80,dst=8080)) > > +set(udp(src=81,dst=6632)) > > +set(icmp(type=1,code=2)) > > +set(ipv6(src=::1,dst=::2,label=0,proto=10,tclass=0x70,hlimit=128,frag=no)) > > +set(icmpv6(type=1,code=2)) > > +push_vlan(vid=12,pcp=0) > > +push_vlan(vid=13,pcp=5,cfi=0) > > +push_vlan(tpid=0x9100,vid=13,pcp=5) > > +push_vlan(tpid=0x9100,vid=13,pcp=5,cfi=0) > > +pop_vlan > > +sample(sample=9.7%,actions(1,2,3,push_vlan(vid=1,pcp=2))) > > +]) > > +AT_CHECK_UNQUOTED([test-odp parse-actions < actions.txt], [0], > > + [`cat actions.txt` > > +]) > > +AT_CLEANUP > > diff --git a/tests/test-odp.c b/tests/test-odp.c > > index 29732eb..2b4cfe1 100644 > > --- a/tests/test-odp.c > > +++ b/tests/test-odp.c > > @@ -1,5 +1,5 @@ > > /* > > - * Copyright (c) 2011 Nicira, Inc. > > + * Copyright (c) 2011, 2012 Nicira, Inc. > > * > > * Licensed under the Apache License, Version 2.0 (the "License"); > > * you may not use this file except in compliance with the License. > > @@ -22,10 +22,11 @@ > > #include "flow.h" > > #include "odp-util.h" > > #include "ofpbuf.h" > > +#include "util.h" > > #include "vlog.h" > > > > -int > > -main(void) > > +static int > > +parse_keys(void) > > { > > struct ds in; > > > > @@ -83,3 +84,49 @@ main(void) > > > > return 0; > > } > > + > > +static int > > +parse_actions(void) > > +{ > > + struct ds in; > > + > > + ds_init(&in); > > + vlog_set_levels_from_string("odp_util:console:dbg"); > > + while (!ds_get_test_line(&in, stdin)) { > > + struct ofpbuf odp_actions; > > + struct ds out; > > + int error; > > + > > + /* Convert string to OVS DP actions. */ > > + ofpbuf_init(&odp_actions, 0); > > + error = odp_actions_from_string(ds_cstr(&in), NULL, &odp_actions); > > + if (error) { > > + printf("odp_actions_from_string: error\n"); > > + goto next; > > + } > > + > > + /* Convert odp_actions back to string. */ > > + ds_init(&out); > > + format_odp_actions(&out, odp_actions.data, odp_actions.size); > > + puts(ds_cstr(&out)); > > + ds_destroy(&out); > > + > > + next: > > + ofpbuf_uninit(&odp_actions); > > + } > > + ds_destroy(&in); > > + > > + return 0; > > +} > > + > > +int > > +main(int argc, char *argv[]) > > +{ > > + if (argc == 2 &&!strcmp(argv[1], "parse-keys")) { > > + return parse_keys(); > > + } else if (argc == 2 && !strcmp(argv[1], "parse-actions")) { > > + return parse_actions(); > > + } else { > > + ovs_fatal(0, "usage: %s parse-keys | parse-actions", argv[0]); > > + } > > +} > > -- > > 1.7.2.5 > > > > _______________________________________________ > > dev mailing list > > dev@openvswitch.org > > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev