Looks good, Ethan
On Thu, Jan 26, 2012 at 15:53, Ben Pfaff <b...@nicira.com> wrote: > This will be useful in unit tests, to allow switching output to a new file > during "ovs-ofctl monitor" runtime. > > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > utilities/ovs-ofctl.8.in | 5 +++++ > utilities/ovs-ofctl.c | 21 +++++++++++++++++++++ > 2 files changed, 26 insertions(+), 0 deletions(-) > > diff --git a/utilities/ovs-ofctl.8.in b/utilities/ovs-ofctl.8.in > index 415dddc..afde46c 100644 > --- a/utilities/ovs-ofctl.8.in > +++ b/utilities/ovs-ofctl.8.in > @@ -1137,6 +1137,11 @@ process. The supported commands are listed below. > Causes \fBovs\-ofctl\fR to gracefully terminate. This command applies > only when executing the \fBmonitor\fR or \fBsnoop\fR commands. > . > +.IP "\fBofctl/set\-output\-file \fIfile\fR" > +Causes all subsequent output to go to \fIfile\fR instead of stderr. > +This command applies only when executing the \fBmonitor\fR or > +\fBsnoop\fR commands. > +. > .IP "\fBofctl/send \fIofmsg\fR..." > Sends each \fIofmsg\fR, specified as a sequence of hex digits that > express an OpenFlow message, on the OpenFlow connection. This command > diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c > index 0006bd6..4995354 100644 > --- a/utilities/ovs-ofctl.c > +++ b/utilities/ovs-ofctl.c > @@ -24,6 +24,7 @@ > #include <stdlib.h> > #include <string.h> > #include <unistd.h> > +#include <sys/fcntl.h> > #include <sys/stat.h> > #include <sys/time.h> > > @@ -901,6 +902,24 @@ ofctl_send(struct unixctl_conn *conn, int argc, > } > > static void > +ofctl_set_output_file(struct unixctl_conn *conn, int argc OVS_UNUSED, > + const char *argv[], void *aux OVS_UNUSED) > +{ > + int fd; > + > + fd = open(argv[1], O_CREAT | O_TRUNC | O_WRONLY, 0666); > + if (fd < 0) { > + unixctl_command_reply(conn, 501, strerror(errno)); > + return; > + } > + > + fflush(stderr); > + dup2(fd, STDERR_FILENO); > + close(fd); > + unixctl_command_reply(conn, 200, ""); > +} > + > +static void > monitor_vconn(struct vconn *vconn) > { > struct unixctl_server *server; > @@ -937,6 +956,8 @@ monitor_vconn(struct vconn *vconn) > unixctl_command_register("exit", "", 0, 0, ofctl_exit, &exiting); > unixctl_command_register("ofctl/send", "OFMSG...", 1, INT_MAX, > ofctl_send, vconn); > + unixctl_command_register("ofctl/set-output-file", "FILE", 1, 1, > + ofctl_set_output_file, NULL); > daemonize_complete(); > > /* Now get stderr back. */ > -- > 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