On Tue, Dec 13, 2011 at 03:18:17PM -0800, Ethan Jackson wrote:
> Why are min and max args 'int's instead of 'size_t's or 'unsigned'?
I was drawing an analogy to main(), which has an "int" for argc.
> In ofproto/trace, you have a case which expects argc == 6, but you
> only allow a maximum of 4 (+ 1 = 5) arguments when you register. It
> looks like you are leaving off the priority field in the usage of the
> register call.
Good point, both fixed:
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 23b3369..4661d2b 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -5787,8 +5787,8 @@ ofproto_dpif_unixctl_init(void)
unixctl_command_register(
"ofproto/trace",
- "bridge {tun_id in_port packet | odp_flow [-generate]}",
- 2, 4, ofproto_unixctl_trace, NULL);
+ "bridge {priority tun_id in_port packet | odp_flow [-generate]}",
+ 2, 5, ofproto_unixctl_trace, NULL);
unixctl_command_register("fdb/flush", "bridge", 1, 1,
ofproto_unixctl_fdb_flush, NULL);
unixctl_command_register("fdb/show", "bridge", 1, 1,
> The argument parsing of ofproto/trace is pretty confusing in general.
> I wonder if it would be worth unit testing all of the possible code
> paths beyond what we're already doing for the ofproto-dpif unit tests.
I agree that that is a good idea.
> > @@ -803,11 +803,8 @@ netdev_linux_recv(struct netdev *netdev_, void *data,
> > size_t size)
> >
> > for (;;) {
> > ssize_t retval = recv(netdev->fd, data, size, MSG_TRUNC);
> > - if (retval > size) {
> > - /* Received packet was longer than supplied buffer. */
> > - return -EMSGSIZE;
> > - } else if (retval >= 0) {
> > - return retval;
> > + if (retval >= 0) {
> > + return retval <= size ? retval : -EMSGSIZE;
>
> This looks like a rebasing error to me. Was it intended for this patch?
You are right, that's a mistake. I have now folded it into
"netdev-linux: Report error for truncated packets on receive."
> > + for (i = 0; i < n_stress_options; i++) {
> > + struct stress_option *option = stress_options[i];
> > + if (!strcmp(option_name, option->name)) {
> > + unsigned int period = strtoul(option_val, NULL, 0);
> > + bool random = !strcmp(argv[3], "random");
>
> argv[3] could be NULL here.
Good point, fixed:
diff --git a/lib/stress.c b/lib/stress.c
index 0fdc79a..7247b3b 100644
--- a/lib/stress.c
+++ b/lib/stress.c
@@ -190,7 +190,7 @@ stress_unixctl_set(struct unixctl_conn *conn, int argc
OVS_UNUSED,
struct stress_option *option = stress_options[i];
if (!strcmp(option_name, option->name)) {
unsigned int period = strtoul(option_val, NULL, 0);
- bool random = !strcmp(argv[3], "random");
+ bool random = argc >= 4 && !strcmp(argv[3], "random");
stress_set(option, period, random);
code = 200;
> > + unixctl_command_register(
> > + "vlog/set", "{module[:facility[:level]] |
> > PATTERN:facility:pattern}",
>
> I might be inclined to add a ... to the end of the usage argument.
> However, I don't know what standard practice for this sort of thing
> is.
Sure, I added the ..., thank you.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev