[ovs-dev] [PATCH] lib: Adapt jsonrpc header file for use in C++.

Ben Pfaff blp at ovn.org
Thu Oct 4 18:50:00 UTC 2018


On Thu, Oct 04, 2018 at 11:34:44AM -0700, Yifeng Sun wrote:
> Or we make the changes to ovsdb-types.h as below so that it can be compiled
> by c++ compilers. What do you think?

Those changes are fine with me.

> diff --git a/lib/ovsdb-types.h b/lib/ovsdb-types.h
> index 368c41617794..b9eb0928df6b 100644
> --- a/lib/ovsdb-types.h
> +++ b/lib/ovsdb-types.h
> @@ -53,6 +53,27 @@ enum ovsdb_ref_type {
>      OVSDB_REF_WEAK              /* Delete reference if target disappears.
> */
>  };
> 
> +struct ovsdb_integer_constraints {
> +    int64_t min;        /* minInteger or INT64_MIN. */
> +    int64_t max;        /* maxInteger or INT64_MAX. */
> +};
> +
> +struct ovsdb_real_constraints {
> +    double min;         /* minReal or -DBL_MAX. */
> +    double max;         /* minReal or DBL_MAX. */
> +};
> +
> +struct ovsdb_string_constraints {
> +    unsigned int minLen; /* minLength or 0. */
> +    unsigned int maxLen; /* maxLength or UINT_MAX. */
> +};
> +
> +struct ovsdb_uuid_constraints {
> +    char *refTableName; /* Name of referenced table, or NULL. */
> +    struct ovsdb_table *refTable; /* Referenced table, if available. */
> +    enum ovsdb_ref_type refType;  /* Reference type. */
> +};
> +
>  struct ovsdb_base_type {
>      enum ovsdb_atomic_type type;
> 
> @@ -61,28 +82,11 @@ struct ovsdb_base_type {
>      struct ovsdb_datum *enum_;
> 
>      union {
> -        struct ovsdb_integer_constraints {
> -            int64_t min;        /* minInteger or INT64_MIN. */
> -            int64_t max;        /* maxInteger or INT64_MAX. */
> -        } integer;
> -
> -        struct ovsdb_real_constraints {
> -            double min;         /* minReal or -DBL_MAX. */
> -            double max;         /* minReal or DBL_MAX. */
> -        } real;
> -
> +        struct ovsdb_integer_constraints integer;
> +        struct ovsdb_real_constraints real;
>          /* No constraints for Boolean types. */
> -
> -        struct ovsdb_string_constraints {
> -            unsigned int minLen; /* minLength or 0. */
> -            unsigned int maxLen; /* maxLength or UINT_MAX. */
> -        } string;
> -
> -        struct ovsdb_uuid_constraints {
> -            char *refTableName; /* Name of referenced table, or NULL. */
> -            struct ovsdb_table *refTable; /* Referenced table, if
> available. */
> -            enum ovsdb_ref_type refType;  /* Reference type. */
> -        } uuid;
> +        struct ovsdb_string_constraints string;
> +        struct ovsdb_uuid_constraints uuid;
>      };
>  };
> 
> On Thu, Oct 4, 2018 at 9:28 AM Ben Pfaff <blp at ovn.org> wrote:
> 
> > One point of view is that JSON-RPC is a standard protocol and it's not
> > OVS's responsibility to implement it for every third-party program.
> >
> > Another is that we could expose the additional APIs that are needed.
> >
> > On Wed, Oct 03, 2018 at 07:01:09PM -0700, Yifeng Sun wrote:
> > > We need a proper method for external code to send queries to db.sock.
> > > The jsonrpc.h does expose more than what is needed.
> > > Do you have any better suggestion?
> > >
> > > Thanks,
> > > Yifeng
> > >
> > > On Wed, Oct 3, 2018 at 6:26 PM Ben Pfaff <blp at ovn.org> wrote:
> > >
> > > > On Wed, Oct 03, 2018 at 04:07:22PM -0700, Yifeng Sun wrote:
> > > > > This patch exposes jsonrpc.h for inclusion in C++, which will be
> > > > > used by NSX.
> > > > >
> > > > > It added [extern "C"] to the header file and fixed other places
> > > > > to accommodate this change.
> > > > >
> > > > > Signed-off-by: Yifeng Sun <pkusunyifeng at gmail.com>
> > > >
> > > > Is this useful by itself?  The header file refers to struct stream,
> > > > struct pstream, struct reconnect_stats, and struct svec, but these
> > > > aren't in public headers.
> > > >
> >


More information about the dev mailing list