[ovs-dev] [PATCH 09/15] ovsdb-idlc: Eliminate <prefix>_init() function from generated code.

Ben Pfaff blp at ovn.org
Thu Oct 6 03:16:46 UTC 2016


Signed-off-by: Ben Pfaff <blp at ovn.org>
---
 ovn/controller-vtep/ovn-controller-vtep.c |  3 --
 ovn/controller/ovn-controller.c           |  3 --
 ovn/northd/ovn-northd.c                   |  3 --
 ovn/utilities/ovn-nbctl.c                 |  1 -
 ovn/utilities/ovn-sbctl.c                 |  1 -
 ovn/utilities/ovn-trace.c                 |  1 -
 ovsdb/ovsdb-idlc.in                       | 87 +++++++++++-------------------
 python/ovs/db/data.py                     | 54 +++++++++----------
 python/ovs/db/types.py                    | 88 ++++++++++++++++++-------------
 python/ovs/ovsuuid.py                     | 11 ++--
 tests/test-ovsdb.c                        |  4 --
 utilities/ovs-vsctl.c                     |  1 -
 vswitchd/ovs-vswitchd.c                   |  3 +-
 vtep/vtep-ctl.c                           |  1 -
 14 files changed, 113 insertions(+), 148 deletions(-)

diff --git a/ovn/controller-vtep/ovn-controller-vtep.c b/ovn/controller-vtep/ovn-controller-vtep.c
index baee789..d73f624 100644
--- a/ovn/controller-vtep/ovn-controller-vtep.c
+++ b/ovn/controller-vtep/ovn-controller-vtep.c
@@ -76,9 +76,6 @@ main(int argc, char *argv[])
 
     daemonize_complete();
 
-    vteprec_init();
-    sbrec_init();
-
     /* Connect to VTEP database. */
     struct ovsdb_idl_loop vtep_idl_loop = OVSDB_IDL_LOOP_INITIALIZER(
         ovsdb_idl_create(vtep_remote, &vteprec_idl_class, true, true));
diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c
index 00392ca..7e97cec 100644
--- a/ovn/controller/ovn-controller.c
+++ b/ovn/controller/ovn-controller.c
@@ -432,9 +432,6 @@ main(int argc, char *argv[])
 
     daemonize_complete();
 
-    ovsrec_init();
-    sbrec_init();
-
     ofctrl_init(&group_table);
     pinctrl_init();
     lflow_init();
diff --git a/ovn/northd/ovn-northd.c b/ovn/northd/ovn-northd.c
index 4668d9e..56c15c7 100644
--- a/ovn/northd/ovn-northd.c
+++ b/ovn/northd/ovn-northd.c
@@ -4744,9 +4744,6 @@ main(int argc, char *argv[])
 
     daemonize_complete();
 
-    nbrec_init();
-    sbrec_init();
-
     /* We want to detect (almost) all changes to the ovn-nb db. */
     struct ovsdb_idl_loop ovnnb_idl_loop = OVSDB_IDL_LOOP_INITIALIZER(
         ovsdb_idl_create(ovnnb_db, &nbrec_idl_class, true, true));
diff --git a/ovn/utilities/ovn-nbctl.c b/ovn/utilities/ovn-nbctl.c
index ad2d2f8..df1c405 100644
--- a/ovn/utilities/ovn-nbctl.c
+++ b/ovn/utilities/ovn-nbctl.c
@@ -99,7 +99,6 @@ main(int argc, char *argv[])
     fatal_ignore_sigpipe();
     vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN);
     vlog_set_levels_from_string_assert("reconnect:warn");
-    nbrec_init();
 
     nbctl_cmd_init();
 
diff --git a/ovn/utilities/ovn-sbctl.c b/ovn/utilities/ovn-sbctl.c
index b894b8b..afc350a 100644
--- a/ovn/utilities/ovn-sbctl.c
+++ b/ovn/utilities/ovn-sbctl.c
@@ -97,7 +97,6 @@ main(int argc, char *argv[])
     fatal_ignore_sigpipe();
     vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN);
     vlog_set_levels_from_string_assert("reconnect:warn");
-    sbrec_init();
 
     sbctl_cmd_init();
 
diff --git a/ovn/utilities/ovn-trace.c b/ovn/utilities/ovn-trace.c
index a35909f..788809e 100644
--- a/ovn/utilities/ovn-trace.c
+++ b/ovn/utilities/ovn-trace.c
@@ -76,7 +76,6 @@ main(int argc, char *argv[])
     service_start(&argc, &argv);
     fatal_ignore_sigpipe();
     vlog_set_levels_from_string_assert("reconnect:warn");
-    sbrec_init();
 
     /* Parse command line. */
     parse_options(argc, argv);
diff --git a/ovsdb/ovsdb-idlc.in b/ovsdb/ovsdb-idlc.in
index f6f00b3..17b4453 100755
--- a/ovsdb/ovsdb-idlc.in
+++ b/ovsdb/ovsdb-idlc.in
@@ -283,7 +283,6 @@ bool %(s)s_is_updated(const struct %(s)s *, enum %(s)s_column_id);
     print "\nextern struct ovsdb_idl_table_class %stable_classes[%sN_TABLES];" % (prefix, prefix.upper())
 
     print "\nextern struct ovsdb_idl_class %sidl_class;" % prefix
-    print "\nvoid %sinit(void);" % prefix
 
     print "\nconst char * %sget_db_version(void);" % prefix
     print "\n#endif /* %(prefix)sIDL_HEADER */" % {'prefix': prefix.upper()}
@@ -319,7 +318,6 @@ enum { sizeof_bool = 1 };
 enum { sizeof_bool = sizeof(bool) };
 #endif
 
-static bool inited;
 ''' % schema.idlHeader
 
     # Cast functions.
@@ -345,7 +343,6 @@ static struct %(s)s *
 static void
 %(s)s_parse_%(c)s(struct ovsdb_idl_row *row_, const struct ovsdb_datum *datum)
 {
-    ovs_assert(inited);
     struct %(s)s *row = %(s)s_cast(row_);''' % {'s': structName,
                                                 'c': columnName}
             type = column.type
@@ -447,9 +444,8 @@ static void
 static void
 %(s)s_unparse_%(c)s(struct ovsdb_idl_row *row_)
 {
-    struct %(s)s *row = %(s)s_cast(row_);
-
-    ovs_assert(inited);''' % {'s': structName, 'c': columnName}
+    struct %(s)s *row = %(s)s_cast(row_);''' % {'s': structName,
+                                                'c': columnName}
 
                 if type.is_smap():
                     print "    smap_destroy(&row->%s);" % columnName
@@ -614,7 +610,6 @@ bool
 void
 %(s)s_verify_%(c)s(const struct %(s)s *row)
 {
-    ovs_assert(inited);
     ovsdb_idl_txn_verify(&row->header_, &%(s)s_col_%(c)s);
 }''' % {'s': structName,
         'S': structName.upper(),
@@ -675,7 +670,6 @@ const struct ovsdb_datum *
 {
     struct ovsdb_datum datum;
 
-    ovs_assert(inited);
     if (%(c)s) {
         ovsdb_datum_from_smap(&datum, %(c)s);
     } else {
@@ -708,11 +702,10 @@ const struct ovsdb_datum *
 void
 %(s)s_set_%(c)s(const struct %(s)s *row, %(args)s)
 {
-    ovs_assert(inited);
     struct ovsdb_datum datum;""" % {'s': structName,
-                              'c': columnName,
-                              'args': ', '.join(['%(type)s%(name)s'
-                                                 % m for m in members])}
+        'c': columnName,
+        'args': ', '.join(['%(type)s%(name)s'
+                           % m for m in members])}
             if type.n_min == 1 and type.n_max == 1:
                 print "    union ovsdb_atom key;"
                 if type.value:
@@ -793,8 +786,6 @@ void
 {
     struct ovsdb_datum *datum;
 
-    ovs_assert(inited);
-
     datum = xmalloc(sizeof *datum);
     datum->n = 1;
     datum->keys = xmalloc(datum->n * sizeof *datum->keys);
@@ -821,8 +812,6 @@ void
 {
     struct ovsdb_datum *datum;
 
-    ovs_assert(inited);
-
     datum = xmalloc(sizeof *datum);
     datum->n = 1;
     datum->keys = xmalloc(datum->n * sizeof *datum->keys);
@@ -851,8 +840,6 @@ void
 {
     struct ovsdb_datum *datum;
 
-    ovs_assert(inited);
-
     datum = xmalloc(sizeof *datum);
     datum->n = 1;
     datum->keys = xmalloc(datum->n * sizeof *datum->values);
@@ -877,8 +864,6 @@ void
 {
     struct ovsdb_datum *datum;
 
-    ovs_assert(inited);
-
     datum = xmalloc(sizeof *datum);
     datum->n = 1;
     datum->keys = xmalloc(datum->n * sizeof *datum->values);
@@ -910,7 +895,6 @@ void
 {
     struct ovsdb_datum datum;
 
-    ovs_assert(inited);
     if (%(c)s) {
         ovsdb_datum_from_smap(&datum, %(c)s);
     } else {
@@ -952,7 +936,6 @@ void
                 {'s': structName, 'c': columnName,
                  'args': ', '.join(['%(type)s%(name)s' % m for m in members])}
             print "{"
-            print "    ovs_assert(inited);"
             print "    struct ovsdb_datum datum;"
             free = []
             if type.n_min == 1 and type.n_max == 1:
@@ -1067,7 +1050,6 @@ void
 {
     struct ovsdb_datum datum;
 
-    ovs_assert(inited);
     if (%(c)s) {
         ovsdb_datum_from_smap(&datum, %(c)s);
     } else {
@@ -1106,7 +1088,6 @@ void
                 {'s': structName, 'c': columnName,
                  'args': ', '.join(['%(type)s%(name)s' % m for m in members])}
             print "{"
-            print "    ovs_assert(inited);"
             print "    struct ovsdb_datum datum;"
             free = []
             if type.n_min == 1 and type.n_max == 1:
@@ -1203,29 +1184,37 @@ void
         'P': prefix.upper(),}
 
         # Table columns.
-        print "\nstruct ovsdb_idl_column %s_columns[%s_N_COLUMNS];" % (
+        for columnName, column in sorted_columns(table):
+            prereqs = []
+            x = column.type.cInitType("%s_col_%s" % (tableName, columnName), prereqs)
+            if prereqs:
+                print '\n'.join(prereqs)
+        print "\nstruct ovsdb_idl_column %s_columns[%s_N_COLUMNS] = {" % (
             structName, structName.upper())
-        print """
-static void\n%s_columns_init(void)
-{
-    struct ovsdb_idl_column *c;\
-""" % structName
         for columnName, column in sorted_columns(table):
-            cs = "%s_col_%s" % (structName, columnName)
-            d = {'cs': cs, 'c': columnName, 's': structName}
             if column.mutable:
                 mutable = "true"
             else:
                 mutable = "false"
-            print
-            print "    /* Initialize %(cs)s. */" % d
-            print "    c = &%(cs)s;" % d
-            print "    c->name = \"%(c)s\";" % d
-            print column.type.cInitType("    ", "c->type")
-            print "    c->mutable = %s;" % mutable
-            print "    c->parse = %(s)s_parse_%(c)s;" % d
-            print "    c->unparse = %(s)s_unparse_%(c)s;" % d
-        print "}"
+            type_init = '\n'.join("            " + x
+                                  for x in column.type.cInitType("%s_col_%s" % (tableName, columnName), prereqs))
+            print """\
+    [%(P)s%(T)s_COL_%(C)s] = {
+         .name = "%(c)s",
+         .type = {
+%(type)s
+         },
+         .mutable = %(mutable)s,
+         .parse = %(s)s_parse_%(c)s,
+         .unparse = %(s)s_unparse_%(c)s,
+    },\n""" % {'P': prefix.upper(),
+               'T': tableName.upper(),
+               'c': columnName,
+               'C': columnName.upper(),
+               's': structName,
+               'mutable': mutable,
+               'type': type_init}
+        print "};"
 
     # Table classes.
     print ""
@@ -1248,22 +1237,6 @@ static void\n%s_columns_init(void)
         schema.name, prefix, prefix)
     print "};"
 
-    # global init function
-    print """
-void
-%sinit(void)
-{
-    if (inited) {
-        return;
-    }
-    assert_single_threaded();
-    inited = true;
-""" % prefix
-    for tableName, table in sorted(schema.tables.iteritems()):
-        structName = "%s%s" % (prefix, tableName.lower())
-        print "    %s_columns_init();" % structName
-    print "}"
-
     print """
 /* Return the schema version.  The caller must not free the returned value. */
 const char *
diff --git a/python/ovs/db/data.py b/python/ovs/db/data.py
index 6d87f89..98084ac 100644
--- a/python/ovs/db/data.py
+++ b/python/ovs/db/data.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2009, 2010, 2011, 2014 Nicira, Inc.
+# Copyright (c) 2009, 2010, 2011, 2014, 2016 Nicira, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -198,19 +198,18 @@ class Atom(object):
 
     def cInitAtom(self, var):
         if self.type == ovs.db.types.IntegerType:
-            return ['%s.integer = %d;' % (var, self.value)]
+            return '.integer = %d' % self.value
         elif self.type == ovs.db.types.RealType:
-            return ['%s.real = %.15g;' % (var, self.value)]
+            return '.real = %.15g' % self.value
         elif self.type == ovs.db.types.BooleanType:
             if self.value:
-                return ['%s.boolean = true;']
+                return '.boolean = true'
             else:
-                return ['%s.boolean = false;']
+                return '.boolean = false'
         elif self.type == ovs.db.types.StringType:
-            return ['%s.string = xstrdup("%s");'
-                    % (var, escapeCString(self.value))]
+            return '.string = "%s"' % escapeCString(self.value)
         elif self.type == ovs.db.types.UuidType:
-            return ovs.ovsuuid.to_c_assignment(self.value, var)
+            return '.uuid = %s' % ovs.ovsuuid.to_c_assignment(self.value)
 
     def toEnglish(self, escapeLiteral=returnUnchanged):
         if self.type == ovs.db.types.IntegerType:
@@ -562,27 +561,26 @@ class Datum(object):
         n = len(self.values)
         return self.type.n_min <= n <= self.type.n_max
 
-    def cInitDatum(self, var):
-        if len(self.values) == 0:
-            return ["ovsdb_datum_init_empty(%s);" % var]
-
-        s = ["%s->n = %d;" % (var, len(self.values))]
-        s += ["%s->keys = xmalloc(%d * sizeof *%s->keys);"
-              % (var, len(self.values), var)]
+    def cDeclareDatum(self, name):
+        n = len(self.values)
+        if n == 0:
+            return ["static struct ovsdb_datum %s = { .n = 0 };"]
 
-        for i, key in enumerate(sorted(self.values)):
-            s += key.cInitAtom("%s->keys[%d]" % (var, i))
+        s = ["static union ovsdb_atom %s_keys[%d] = {" % (name, n)]
+        for key in sorted(self.values):
+            s += ["    { %s }," % key.cInitAtom(key)]
+        s += ["};"]
 
         if self.type.value:
-            s += ["%s->values = xmalloc(%d * sizeof *%s->values);"
-                  % (var, len(self.values), var)]
-            for i, (key, value) in enumerate(sorted(self.values.items())):
-                s += value.cInitAtom("%s->values[%d]" % (var, i))
-        else:
-            s += ["%s->values = NULL;" % var]
-
-        if len(self.values) > 1:
-            s += ["ovsdb_datum_sort_assert(%s, OVSDB_TYPE_%s);"
-                  % (var, self.type.key.type.to_string().upper())]
-
+            s = ["static union ovsdb_atom %s_values[%d] = {" % (name, n)]
+            for k, v in sorted(self.values.items()):
+                s += ["    { %s }," % v.cInitAtom(v)]
+            s += ["};"]
+
+        s += ["static struct ovsdb_datum %s = {" % name]
+        s += ["    .n = %d," % n]
+        s += ["    .keys = %s_keys," % name]
+        if self.type.value:
+            s += ["    .values = %s_values," % name]
+        s += ["};"]
         return s
diff --git a/python/ovs/db/types.py b/python/ovs/db/types.py
index 3550303..2d2ef8f 100644
--- a/python/ovs/db/types.py
+++ b/python/ovs/db/types.py
@@ -402,40 +402,50 @@ class BaseType(object):
                        StringType: '%s = NULL;'}[self.type]
             return pattern % var
 
-    def cInitBaseType(self, indent, var):
-        stmts = []
-        stmts.append('ovsdb_base_type_init(&%s, %s);' % (
-                var, self.toAtomicType()))
+    def cInitBaseType(self, prefix, prereqs):
+        init = [".type = %s," % self.toAtomicType()]
         if self.enum:
-            stmts.append("%s.enum_ = xmalloc(sizeof *%s.enum_);"
-                         % (var, var))
-            stmts += self.enum.cInitDatum("%s.enum_" % var)
+            datum_name = "%s_enum" % prefix
+            init += [".enum_ = &%s," % datum_name]
+            prereqs += self.enum.cDeclareDatum(datum_name)
         if self.type == IntegerType:
-            if self.min is not None:
-                stmts.append('%s.u.integer.min = INT64_C(%d);'
-                        % (var, self.min))
-            if self.max is not None:
-                stmts.append('%s.u.integer.max = INT64_C(%d);'
-                        % (var, self.max))
+            if self.min is None:
+                low = "INT64_MIN"
+            else:
+                low = "INT64_C(%d)" % self.min
+            if self.max is None:
+                high = "INT64_MAX"
+            else:
+                high = "INT64_C(%d)" % self.max
+            init.append(".u.integer = { .min = %s, .max = %s }," % (low, high))
         elif self.type == RealType:
-            if self.min is not None:
-                stmts.append('%s.u.real.min = %d;' % (var, self.min))
-            if self.max is not None:
-                stmts.append('%s.u.real.max = %d;' % (var, self.max))
+            if self.min is None:
+                low = "-DBL_MAX"
+            else:
+                low = self.min
+            if self.max is None:
+                high = "DBL_MAX"
+            else:
+                high = self.max
+            init.append(".u.real = { .min = %s, .max = %s }," % (low, high))
         elif self.type == StringType:
-            if self.min_length is not None:
-                stmts.append('%s.u.string.minLen = %d;'
-                        % (var, self.min_length))
-            if self.max_length != sys.maxsize:
-                stmts.append('%s.u.string.maxLen = %d;'
-                        % (var, self.max_length))
+            if self.min is None:
+                low = 0
+            else:
+                low = self.min_length
+            if self.max is None:
+                high = "UINT_MAX"
+            else:
+                high = self.max_length
+            init.append(".u.string = { .minLen = %s, .maxLen = %s }," % (
+                low, high))
         elif self.type == UuidType:
             if self.ref_table_name is not None:
-                stmts.append('%s.u.uuid.refTableName = "%s";'
-                        % (var, escapeCString(self.ref_table_name)))
-                stmts.append('%s.u.uuid.refType = OVSDB_REF_%s;'
-                        % (var, self.ref_type.upper()))
-        return '\n'.join([indent + stmt for stmt in stmts])
+                init.append(".u.uuid = { .refTableName = \"%s\", "
+                            ".refType = OVSDB_REF_%s }," % (
+                                escapeCString(self.ref_table_name),
+                                self.ref_type.upper()))
+        return init
 
 
 class Type(object):
@@ -613,17 +623,23 @@ class Type(object):
         else:
             return ""
 
-    def cInitType(self, indent, var):
-        initKey = self.key.cInitBaseType(indent, "%s.key" % var)
+    def cInitType(self, prefix, prereqs):
+        init = [".key = {"]
+        init += ["   " + x for x in self.key.cInitBaseType(prefix + "_key",
+                                                           prereqs)]
+        init += ["},"]
         if self.value:
-            initValue = self.value.cInitBaseType(indent, "%s.value" % var)
+            init += [".value = {"]
+            init += ["    " + x
+                     for x in self.value.cInitBaseType(prefix + "_value",
+                                                       prereqs)]
+            init += ["},"]
         else:
-            initValue = ('%sovsdb_base_type_init(&%s.value, '
-                         'OVSDB_TYPE_VOID);' % (indent, var))
-        initMin = "%s%s.n_min = %s;" % (indent, var, self.n_min)
+            init.append(".value = OVSDB_BASE_VOID_INIT,")
+        init.append(".n_min = %s," % self.n_min)
         if self.n_max == sys.maxsize:
             n_max = "UINT_MAX"
         else:
             n_max = self.n_max
-        initMax = "%s%s.n_max = %s;" % (indent, var, n_max)
-        return "\n".join((initKey, initValue, initMin, initMax))
+        init.append(".n_max = %s," % n_max)
+        return init
diff --git a/python/ovs/ovsuuid.py b/python/ovs/ovsuuid.py
index a8f0d14..a9774ae 100644
--- a/python/ovs/ovsuuid.py
+++ b/python/ovs/ovsuuid.py
@@ -1,4 +1,4 @@
-# Copyright (c) 2009, 2010, 2011 Nicira, Inc.
+# Copyright (c) 2009, 2010, 2011, 2016 Nicira, Inc.
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
@@ -63,11 +63,8 @@ def to_json(uuid_):
     return ["uuid", str(uuid_)]
 
 
-def to_c_assignment(uuid_, var):
-    """Returns an array of strings, each of which contain a C statement.  The
-    statements assign 'uuid_' to a "struct uuid" as defined in Open vSwitch
-    lib/uuid.h."""
-
+def to_c_initializer(uuid_, var):
     hex_string = uuid_.hex
-    return ["%s.parts[%d] = 0x%s;" % (var, x, hex_string[x * 8:(x + 1) * 8])
+    parts = ["0x%s" % (hex_string[x * 8:(x + 1) * 8])
             for x in range(4)]
+    return "{ %s }," % ", ".join(parts)
diff --git a/tests/test-ovsdb.c b/tests/test-ovsdb.c
index 35b70e9..7e3085b 100644
--- a/tests/test-ovsdb.c
+++ b/tests/test-ovsdb.c
@@ -2381,8 +2381,6 @@ do_idl(struct ovs_cmdl_context *ctx)
     int i;
     bool track;
 
-    idltest_init();
-
     track = ((struct test_ovsdb_pvt_context *)(ctx->pvt))->track;
 
     idl = ovsdb_idl_create(ctx->argv[1], &idltest_idl_class, true, true);
@@ -2530,7 +2528,6 @@ do_idl_partial_update_map_column(struct ovs_cmdl_context *ctx)
     int step = 0;
     char key_to_delete[100];
 
-    idltest_init();
     idl = ovsdb_idl_create(ctx->argv[1], &idltest_idl_class, false, true);
     ovsdb_idl_add_table(idl, &idltest_table_simple2);
     ovsdb_idl_add_column(idl, &idltest_simple2_col_name);
@@ -2638,7 +2635,6 @@ do_idl_partial_update_set_column(struct ovs_cmdl_context *ctx)
     const struct ovsdb_datum *uref OVS_UNUSED;
     int step = 0;
 
-    idltest_init();
     idl = ovsdb_idl_create(ctx->argv[1], &idltest_idl_class, false, true);
     ovsdb_idl_add_table(idl, &idltest_table_simple3);
     ovsdb_idl_add_column(idl, &idltest_simple3_col_name);
diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c
index e710095..ab5188b 100644
--- a/utilities/ovs-vsctl.c
+++ b/utilities/ovs-vsctl.c
@@ -141,7 +141,6 @@ main(int argc, char *argv[])
     fatal_ignore_sigpipe();
     vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN);
     vlog_set_levels_from_string_assert("reconnect:warn");
-    ovsrec_init();
 
     vsctl_cmd_init();
 
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index 72448bb..c2a9158 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -1,4 +1,4 @@
-/* Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
+/* Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -75,7 +75,6 @@ main(int argc, char *argv[])
     service_start(&argc, &argv);
     remote = parse_options(argc, argv, &unixctl_path);
     fatal_ignore_sigpipe();
-    ovsrec_init();
 
     daemonize_start(true);
 
diff --git a/vtep/vtep-ctl.c b/vtep/vtep-ctl.c
index 245ba0d..3450deb 100644
--- a/vtep/vtep-ctl.c
+++ b/vtep/vtep-ctl.c
@@ -105,7 +105,6 @@ main(int argc, char *argv[])
     fatal_ignore_sigpipe();
     vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN);
     vlog_set_levels_from_string_assert("reconnect:warn");
-    vteprec_init();
 
     vtep_ctl_cmd_init();
 
-- 
2.1.3




More information about the dev mailing list