Jarno, do you have time to look at this?
On 13 November 2014 11:17, Joe Stringer <joestrin...@nicira.com> wrote: > This patch adds a new 'ovs-appctl revalidator/purge' command which > flushes all flows from all datapaths, and updates the revalidator > udpif_key cache at the same time. > > Update the ofproto-dpif fragment tests which may fail when ukeys are > created from handler threads. > > Signed-off-by: Joe Stringer <joestrin...@nicira.com> > CC: Jarno Rajahalme <jrajaha...@nicira.com> > --- > v10: First post. > --- > ofproto/ofproto-dpif-upcall.c | 20 ++++++++++++++++++++ > tests/ofproto-dpif.at | 8 ++++---- > 2 files changed, 24 insertions(+), 4 deletions(-) > > diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c > index 1f9c484..eba9816 100644 > --- a/ofproto/ofproto-dpif-upcall.c > +++ b/ofproto/ofproto-dpif-upcall.c > @@ -234,6 +234,8 @@ static void upcall_unixctl_set_flow_limit(struct > unixctl_conn *conn, int argc, > const char *argv[], void *aux); > static void upcall_unixctl_dump_wait(struct unixctl_conn *conn, int argc, > const char *argv[], void *aux); > +static void upcall_unixctl_purge(struct unixctl_conn *conn, int argc, > + const char *argv[], void *aux); > > static struct udpif_key *ukey_create(const struct nlattr *key, size_t > key_len, > long long int used); > @@ -273,6 +275,8 @@ udpif_create(struct dpif_backer *backer, struct dpif > *dpif) > upcall_unixctl_set_flow_limit, NULL); > unixctl_command_register("revalidator/wait", "", 0, 0, > upcall_unixctl_dump_wait, NULL); > + unixctl_command_register("revalidator/purge", "", 0, 0, > + upcall_unixctl_purge, NULL); > ovsthread_once_done(&once); > } > > @@ -1768,3 +1772,19 @@ upcall_unixctl_dump_wait(struct unixctl_conn *conn, > unixctl_command_reply_error(conn, "can't wait on multiple udpifs."); > } > } > + > +static void > +upcall_unixctl_purge(struct unixctl_conn *conn, int argc OVS_UNUSED, > + const char *argv[] OVS_UNUSED, void *aux OVS_UNUSED) > +{ > + struct udpif *udpif; > + > + LIST_FOR_EACH (udpif, list_node, &all_udpifs) { > + int n; > + > + for (n = 0; n < udpif->n_revalidators; n++) { > + revalidator_purge(&udpif->revalidators[n]); > + } > + } > + unixctl_command_reply(conn, ""); > +} > diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at > index 5349386..eb4d4cb 100644 > --- a/tests/ofproto-dpif.at > +++ b/tests/ofproto-dpif.at > @@ -3410,7 +3410,7 @@ > recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), > packets:0, b > > mode=drop > > -AT_CHECK([ovs-appctl dpctl/del-flows], [0]) > +AT_CHECK([ovs-appctl revalidator/purge], [0]) > AT_CHECK([ovs-ofctl set-frags br0 $mode]) > for type in no first later; do > eval flow=\$${type}_flow > @@ -3427,7 +3427,7 @@ > recirc_id(0),in_port(90),eth_type(0x0800),ipv4(frag=later), packets:0, > bytes:0, > > mode=nx-match > > -AT_CHECK([ovs-appctl dpctl/del-flows], [0]) > +AT_CHECK([ovs-appctl revalidator/purge], [0]) > AT_CHECK([ovs-ofctl set-frags br0 $mode]) > for type in no first later; do > eval flow=\$${type}_flow > @@ -3513,7 +3513,7 @@ > recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(src=33419 > recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), > packets:1, bytes:74, used:0.001s, actions:1 > ]) > > -AT_CHECK([ovs-appctl dpctl/del-flows], [0]) > +AT_CHECK([ovs-appctl revalidator/purge], [0]) > AT_CHECK([ovs-ofctl set-frags br0 $mode]) > for frag in 4000 6000 6008 4010; do > printf "\n%s\n" "----$mode $frag truncated transport header -----" > @@ -3527,7 +3527,7 @@ > recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=first),tcp(src=0), > p > recirc_id(0),in_port(90),eth_type(0x0800),ipv4(proto=6,frag=later), > packets:1, bytes:60, used:0.001s, actions:1 > ]) > > -AT_CHECK([ovs-appctl dpctl/del-flows], [0]) > +AT_CHECK([ovs-appctl revalidator/purge], [0]) > AT_CHECK([ovs-ofctl set-frags br0 $mode]) > for frag in 4000 6000 6001 4002; do > printf "\n%s\n" "----$mode $frag missing transport header-----" > -- > 1.7.10.4 > _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev