On Wed, Jul 16, 2014 at 04:26:04PM -0700, Gurucharan Shetty wrote:
> On Wed, Jul 16, 2014 at 3:05 PM, Ben Pfaff <[email protected]> wrote:
> > The only client for ofproto_controller_info was transforming the array of
> > pairs into an smap anyway. It's easy for the code that fills in the array
> > to generate it as an smap directly, and it's also easier to extend later.
> >
> > Signed-off-by: Ben Pfaff <[email protected]>
> > ---
> > ofproto/connmgr.c | 27 ++++++++++-----------------
> > ofproto/ofproto.h | 8 ++------
> > vswitchd/bridge.c | 10 +---------
> > 3 files changed, 13 insertions(+), 32 deletions(-)
> >
> > diff --git a/ofproto/connmgr.c b/ofproto/connmgr.c
> > index 41a58c9..c7deea3 100644
> > --- a/ofproto/connmgr.c
> > +++ b/ofproto/connmgr.c
> > @@ -477,28 +477,23 @@ connmgr_get_controller_info(struct connmgr *mgr,
> > struct shash *info)
> > cinfo->is_connected = rconn_is_connected(rconn);
> > cinfo->role = ofconn->role;
> >
> > - cinfo->pairs.n = 0;
> > -
> > + smap_init(&cinfo->pairs);
> > if (last_error) {
> > - cinfo->pairs.keys[cinfo->pairs.n] = "last_error";
> > - cinfo->pairs.values[cinfo->pairs.n++]
> > - = xstrdup(ovs_retval_to_string(last_error));
> > + smap_add(&cinfo->pairs, "last_error",
> > + ovs_retval_to_string(last_error));
> > }
> >
> > - cinfo->pairs.keys[cinfo->pairs.n] = "state";
> > - cinfo->pairs.values[cinfo->pairs.n++]
> > - = xstrdup(rconn_get_state(rconn));
> > + smap_add(&cinfo->pairs, "state", rconn_get_state(rconn));
> >
> > if (last_connection != TIME_MIN) {
> > - cinfo->pairs.keys[cinfo->pairs.n] = "sec_since_connect";
> > - cinfo->pairs.values[cinfo->pairs.n++]
> > - = xasprintf("%ld", (long int) (now - last_connection));
> > + smap_add_format(&cinfo->pairs, "sec_since_connect",
> > + "%ld", (long int) (now - last_connection));
> > }
> >
> > if (last_disconnect != TIME_MIN) {
> > - cinfo->pairs.keys[cinfo->pairs.n] = "sec_since_disconnect";
> > - cinfo->pairs.values[cinfo->pairs.n++]
> > - = xasprintf("%ld", (long int) (now - last_disconnect));
> > + smap_add_format(&cinfo->pairs, "sec_since_disconnect",
> > + "%ld", (long int) (now - last_disconnect));
> > + }
> Extra '}'. Gives a compilation error.
Oops. Sorry about that, I broke up one commit into several and forgot
to test each one separately.
Removed.
> > }
> > }
> > }
> > @@ -511,9 +506,7 @@ connmgr_free_controller_info(struct shash *info)
> >
> > SHASH_FOR_EACH (node, info) {
> > struct ofproto_controller_info *cinfo = node->data;
> > - while (cinfo->pairs.n) {
> > - free(CONST_CAST(char *,
> > cinfo->pairs.values[--cinfo->pairs.n]));
> > - }
> > + smap_destroy(&cinfo->pairs);
> > free(cinfo);
> > }
> > shash_destroy(info);
> > diff --git a/ofproto/ofproto.h b/ofproto/ofproto.h
> > index d601181..c71662e 100644
> > --- a/ofproto/ofproto.h
> > +++ b/ofproto/ofproto.h
> > @@ -27,6 +27,7 @@
> > #include "flow.h"
> > #include "meta-flow.h"
> > #include "netflow.h"
> > +#include "smap.h"
> > #include "sset.h"
> > #include "stp.h"
> >
> > @@ -43,7 +44,6 @@ struct ofport;
> > struct ofproto;
> > struct shash;
> > struct simap;
> > -struct smap;
> >
> > /* Needed for the lock annotations. */
> > extern struct ovs_mutex ofproto_mutex;
> > @@ -51,11 +51,7 @@ extern struct ovs_mutex ofproto_mutex;
> > struct ofproto_controller_info {
> > bool is_connected;
> > enum ofp12_controller_role role;
> > - struct {
> > - const char *keys[4];
> > - const char *values[4];
> > - size_t n;
> > - } pairs;
> > + struct smap pairs;
> > };
> >
> > struct ofproto_sflow_options {
> > diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c
> > index 25e3279..8125ea4 100644
> > --- a/vswitchd/bridge.c
> > +++ b/vswitchd/bridge.c
> > @@ -2270,19 +2270,11 @@ refresh_controller_status(void)
> >
> > if (cinfo) {
> > struct smap smap = SMAP_INITIALIZER(&smap);
> You can probably get rid of the above line.
Good spotting. I removed it.
> Acked-by: Gurucharan Shetty <[email protected]>
Thanks, I'll apply this to master soon.
_______________________________________________
dev mailing list
[email protected]
http://openvswitch.org/mailman/listinfo/dev