This is a nit in the existing code which your patch doesn't introduce: It's not totally clear to me why we're keeping track of n_listeners. The code may be simpler if we replaced it with a bool "anyone_listened". Better yet, we could always unixctl_command_reply() with "success" and not keep track of it at all.
Ethan On Fri, Aug 10, 2012 at 3:25 PM, Ben Pfaff <b...@nicira.com> wrote: > An upcoming patch will add another user. > > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > lib/netdev-dummy.c | 33 ++++++++++++++++++++++----------- > 1 files changed, 22 insertions(+), 11 deletions(-) > > diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c > index 2922965..b64a932 100644 > --- a/lib/netdev-dummy.c > +++ b/lib/netdev-dummy.c > @@ -415,6 +415,26 @@ eth_from_packet_or_flow(const char *s) > return packet; > } > > +static int > +netdev_dummy_queue_packet(struct netdev_dev_dummy *dummy_dev, > + const void *data, size_t size) > +{ > + struct netdev_dummy *dev; > + int n_listeners; > + > + n_listeners = 0; > + LIST_FOR_EACH (dev, node, &dummy_dev->devs) { > + if (dev->listening && dev->recv_queue_len < NETDEV_DUMMY_MAX_QUEUE) { > + struct ofpbuf *packet = ofpbuf_clone_data(data, size); > + list_push_back(&dev->recv_queue, &packet->list_node); > + dev->recv_queue_len++; > + n_listeners++; > + } > + } > + > + return n_listeners; > +} > + > static void > netdev_dummy_receive(struct unixctl_conn *conn, > int argc, const char *argv[], void *aux OVS_UNUSED) > @@ -431,7 +451,6 @@ netdev_dummy_receive(struct unixctl_conn *conn, > > n_listeners = 0; > for (i = 2; i < argc; i++) { > - struct netdev_dummy *dev; > struct ofpbuf *packet; > > packet = eth_from_packet_or_flow(argv[i]); > @@ -440,16 +459,8 @@ netdev_dummy_receive(struct unixctl_conn *conn, > return; > } > > - n_listeners = 0; > - LIST_FOR_EACH (dev, node, &dummy_dev->devs) { > - if (dev->listening > - && dev->recv_queue_len < NETDEV_DUMMY_MAX_QUEUE) { > - struct ofpbuf *copy = ofpbuf_clone(packet); > - list_push_back(&dev->recv_queue, ©->list_node); > - dev->recv_queue_len++; > - n_listeners++; > - } > - } > + n_listeners += netdev_dummy_queue_packet(dummy_dev, > + packet->data, packet->size); > ofpbuf_delete(packet); > } > > -- > 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