lib: Move vlog.h to <openvswitch/vlog.h>
authorThomas Graf <tgraf@noironetworks.com>
Mon, 15 Dec 2014 13:10:38 +0000 (14:10 +0100)
committerThomas Graf <tgraf@noironetworks.com>
Mon, 15 Dec 2014 13:15:19 +0000 (14:15 +0100)
A new function vlog_insert_module() is introduced to avoid using
list_insert() from the vlog.h header.

Signed-off-by: Thomas Graf <tgraf@noironetworks.com>
Acked-by: Ben Pfaff <blp@nicira.com>
124 files changed:
include/openvswitch/automake.mk
include/openvswitch/vlog.h [new file with mode: 0644]
lib/automake.mk
lib/backtrace.c
lib/bfd.c
lib/bundle.c
lib/cfm.c
lib/classifier.c
lib/command-line.c
lib/coverage.c
lib/daemon-unix.c
lib/daemon-windows.c
lib/daemon.c
lib/dpif-netdev.c
lib/dpif-netlink.c
lib/dpif.c
lib/entropy.c
lib/fatal-signal.c
lib/getopt_long.c
lib/getrusage-windows.c
lib/hmap.c
lib/jsonrpc.c
lib/lacp.c
lib/learning-switch.c
lib/lockfile.c
lib/mcast-snooping.c
lib/memory.c
lib/meta-flow.c
lib/netdev-bsd.c
lib/netdev-dpdk.c
lib/netdev-dummy.c
lib/netdev-linux.c
lib/netdev-vport.c
lib/netdev-windows.c
lib/netdev.c
lib/netlink-notifier.c
lib/netlink-socket.c
lib/netlink.c
lib/nx-match.c
lib/odp-util.c
lib/ofp-actions.c
lib/ofp-errors.c
lib/ofp-msgs.c
lib/ofp-util.c
lib/ovs-numa.c
lib/ovs-rcu.c
lib/ovs-thread.c
lib/ovsdb-error.c
lib/ovsdb-idl.c
lib/pcap-file.c
lib/poll-loop.c
lib/process.c
lib/rconn.c
lib/reconnect.c
lib/route-table.c
lib/rstp-state-machines.c
lib/rstp.c
lib/rtbsd.c
lib/signals.c
lib/socket-util-unix.c
lib/socket-util.c
lib/stp.c
lib/stream-fd.c
lib/stream-nossl.c
lib/stream-ssl.c
lib/stream-tcp.c
lib/stream-unix.c
lib/stream.c
lib/svec.c
lib/timeval.c
lib/tnl-arp-cache.c
lib/unixctl.c
lib/util.c
lib/vconn-stream.c
lib/vconn.c
lib/vlandev.c
lib/vlog.c
lib/vlog.h [deleted file]
ofproto/bond.c
ofproto/bundles.c
ofproto/collectors.c
ofproto/connmgr.c
ofproto/fail-open.c
ofproto/in-band.c
ofproto/netflow.c
ofproto/ofproto-dpif-ipfix.c
ofproto/ofproto-dpif-mirror.c
ofproto/ofproto-dpif-monitor.c
ofproto/ofproto-dpif-sflow.c
ofproto/ofproto-dpif-upcall.c
ofproto/ofproto-dpif-xlate.c
ofproto/ofproto-dpif.c
ofproto/ofproto.c
ofproto/pktbuf.c
ofproto/tunnel.c
ovsdb/file.c
ovsdb/jsonrpc-server.c
ovsdb/ovsdb-client.c
ovsdb/ovsdb-server.c
ovsdb/ovsdb-tool.c
tests/test-flows.c
tests/test-jsonrpc.c
tests/test-lockfile.c
tests/test-netflow.c
tests/test-odp.c
tests/test-ovsdb.c
tests/test-reconnect.c
tests/test-rstp.c
tests/test-sflow.c
tests/test-stp.c
tests/test-util.c
tests/test-vconn.c
utilities/nlmon.c
utilities/ovs-appctl.c
utilities/ovs-benchmark.c
utilities/ovs-dpctl.c
utilities/ovs-ofctl.c
utilities/ovs-testcontroller.c
utilities/ovs-vsctl.c
vswitchd/bridge.c
vswitchd/ovs-vswitchd.c
vswitchd/system-stats.c
vswitchd/xenserver.c
vtep/vtep-ctl.c

index 0b95a0f..5e9b77a 100644 (file)
@@ -6,5 +6,6 @@ openvswitchinclude_HEADERS = \
        include/openvswitch/token-bucket.h \
        include/openvswitch/types.h \
        include/openvswitch/util.h \
-       include/openvswitch/version.h
+       include/openvswitch/version.h \
+       include/openvswitch/vlog.h
 
diff --git a/include/openvswitch/vlog.h b/include/openvswitch/vlog.h
new file mode 100644 (file)
index 0000000..3f71e4b
--- /dev/null
@@ -0,0 +1,296 @@
+/*
+ * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef OPENVSWITCH_VLOG_H
+#define OPENVSWITCH_VLOG_H 1
+
+/* Logging.
+ *
+ *
+ * Thread-safety
+ * =============
+ *
+ * Fully thread safe.
+ */
+
+#include <limits.h>
+#include <stdarg.h>
+#include <stdbool.h>
+#include <time.h>
+#include <openvswitch/compiler.h>
+#include <openvswitch/list.h>
+#include <openvswitch/thread.h>
+#include <openvswitch/token-bucket.h>
+#include <openvswitch/util.h>
+
+#ifdef  __cplusplus
+extern "C" {
+#endif
+
+/* Logging severity levels.
+ *
+ * ovs-appctl(8) defines each of the log levels. */
+#define VLOG_LEVELS                             \
+    VLOG_LEVEL(OFF,  LOG_ALERT,   1)            \
+    VLOG_LEVEL(EMER, LOG_ALERT,   1)            \
+    VLOG_LEVEL(ERR,  LOG_ERR,     3)            \
+    VLOG_LEVEL(WARN, LOG_WARNING, 4)            \
+    VLOG_LEVEL(INFO, LOG_NOTICE,  5)            \
+    VLOG_LEVEL(DBG,  LOG_DEBUG,   7)
+enum vlog_level {
+#define VLOG_LEVEL(NAME, SYSLOG_LEVEL, RFC5424_LEVEL) VLL_##NAME,
+    VLOG_LEVELS
+#undef VLOG_LEVEL
+    VLL_N_LEVELS
+};
+
+const char *vlog_get_level_name(enum vlog_level);
+enum vlog_level vlog_get_level_val(const char *name);
+
+/* Facilities that we can log to. */
+#define VLOG_FACILITIES                                                 \
+    VLOG_FACILITY(SYSLOG, "ovs|%05N|%c%T|%p|%m")                        \
+    VLOG_FACILITY(CONSOLE, "%D{%Y-%m-%dT%H:%M:%SZ}|%05N|%c%T|%p|%m")    \
+    VLOG_FACILITY(FILE, "%D{%Y-%m-%dT%H:%M:%S.###Z}|%05N|%c%T|%p|%m")
+enum vlog_facility {
+#define VLOG_FACILITY(NAME, PATTERN) VLF_##NAME,
+    VLOG_FACILITIES
+#undef VLOG_FACILITY
+    VLF_N_FACILITIES,
+    VLF_ANY_FACILITY = -1
+};
+
+const char *vlog_get_facility_name(enum vlog_facility);
+enum vlog_facility vlog_get_facility_val(const char *name);
+
+/* A log module. */
+struct vlog_module {
+    struct ovs_list list;
+    const char *name;             /* User-visible name. */
+    int levels[VLF_N_FACILITIES]; /* Minimum log level for each facility. */
+    int min_level;                /* Minimum log level for any facility. */
+    bool honor_rate_limits;       /* Set false to ignore rate limits. */
+};
+
+/* Global list of all logging modules */
+extern struct ovs_list vlog_modules;
+
+void vlog_insert_module(struct ovs_list *);
+
+/* Creates and initializes a global instance of a module named MODULE. */
+#define VLOG_DEFINE_MODULE(MODULE)                                      \
+        VLOG_DEFINE_MODULE__(MODULE)                                    \
+        OVS_CONSTRUCTOR(init_##MODULE) {                                \
+                vlog_insert_module(&VLM_##MODULE.list);                 \
+        }                                                               \
+
+const char *vlog_get_module_name(const struct vlog_module *);
+struct vlog_module *vlog_module_from_name(const char *name);
+
+/* Rate-limiter for log messages. */
+struct vlog_rate_limit {
+    struct token_bucket token_bucket;
+    time_t first_dropped;       /* Time first message was dropped. */
+    time_t last_dropped;        /* Time of most recent message drop. */
+    unsigned int n_dropped;     /* Number of messages dropped. */
+    struct ovs_mutex mutex;     /* Mutual exclusion for rate limit. */
+};
+
+/* Number of tokens to emit a message.  We add 'rate' tokens per millisecond,
+ * thus 60,000 tokens are required to emit one message per minute. */
+#define VLOG_MSG_TOKENS (60 * 1000)
+
+/* Initializer for a struct vlog_rate_limit, to set up a maximum rate of RATE
+ * messages per minute and a maximum burst size of BURST messages. */
+#define VLOG_RATE_LIMIT_INIT(RATE, BURST)                                 \
+        {                                                                 \
+            TOKEN_BUCKET_INIT(RATE, OVS_SAT_MUL(BURST, VLOG_MSG_TOKENS)), \
+            0,                              /* first_dropped */           \
+            0,                              /* last_dropped */            \
+            0,                              /* n_dropped */               \
+            OVS_MUTEX_INITIALIZER           /* mutex */                   \
+        }
+
+/* Configuring how each module logs messages. */
+enum vlog_level vlog_get_level(const struct vlog_module *, enum vlog_facility);
+void vlog_set_levels(struct vlog_module *,
+                     enum vlog_facility, enum vlog_level);
+char *vlog_set_levels_from_string(const char *) OVS_WARN_UNUSED_RESULT;
+void vlog_set_levels_from_string_assert(const char *);
+char *vlog_get_levels(void);
+bool vlog_is_enabled(const struct vlog_module *, enum vlog_level);
+bool vlog_should_drop(const struct vlog_module *, enum vlog_level,
+                      struct vlog_rate_limit *);
+void vlog_set_verbosity(const char *arg);
+
+/* Configuring log facilities. */
+void vlog_set_pattern(enum vlog_facility, const char *pattern);
+int vlog_set_log_file(const char *file_name);
+int vlog_reopen_log_file(void);
+
+/* Configure syslog target. */
+void vlog_set_syslog_target(const char *target);
+
+/* Initialization. */
+void vlog_init(void);
+void vlog_enable_async(void);
+
+/* Functions for actual logging. */
+void vlog(const struct vlog_module *, enum vlog_level, const char *format, ...)
+    OVS_PRINTF_FORMAT (3, 4);
+void vlog_valist(const struct vlog_module *, enum vlog_level,
+                 const char *, va_list)
+    OVS_PRINTF_FORMAT (3, 0);
+
+OVS_NO_RETURN void vlog_fatal(const struct vlog_module *, const char *format, ...)
+    OVS_PRINTF_FORMAT (2, 3);
+OVS_NO_RETURN void vlog_fatal_valist(const struct vlog_module *,
+                                 const char *format, va_list)
+    OVS_PRINTF_FORMAT (2, 0);
+
+OVS_NO_RETURN void vlog_abort(const struct vlog_module *, const char *format, ...)
+    OVS_PRINTF_FORMAT (2, 3);
+OVS_NO_RETURN void vlog_abort_valist(const struct vlog_module *,
+                                 const char *format, va_list)
+    OVS_PRINTF_FORMAT (2, 0);
+
+void vlog_rate_limit(const struct vlog_module *, enum vlog_level,
+                     struct vlog_rate_limit *, const char *, ...)
+    OVS_PRINTF_FORMAT (4, 5);
+
+/* Creates and initializes a global instance of a module named MODULE, and
+ * defines a static variable named THIS_MODULE that points to it, for use with
+ * the convenience macros below. */
+#define VLOG_DEFINE_THIS_MODULE(MODULE)                                 \
+        VLOG_DEFINE_MODULE(MODULE);                                     \
+        static struct vlog_module *const THIS_MODULE = &VLM_##MODULE
+
+/* Convenience macros.  These assume that THIS_MODULE points to a "struct
+ * vlog_module" for the current module, as set up by e.g. the
+ * VLOG_DEFINE_MODULE macro above.
+ *
+ * Guaranteed to preserve errno.
+ */
+#define VLOG_FATAL(...) vlog_fatal(THIS_MODULE, __VA_ARGS__)
+#define VLOG_ABORT(...) vlog_abort(THIS_MODULE, __VA_ARGS__)
+#define VLOG_EMER(...) VLOG(VLL_EMER, __VA_ARGS__)
+#define VLOG_ERR(...) VLOG(VLL_ERR, __VA_ARGS__)
+#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
+#define VLOG_INFO(...) VLOG(VLL_INFO, __VA_ARGS__)
+#define VLOG_DBG(...) VLOG(VLL_DBG, __VA_ARGS__)
+
+/* More convenience macros, for testing whether a given level is enabled in
+ * THIS_MODULE.  When constructing a log message is expensive, this enables it
+ * to be skipped. */
+#define VLOG_IS_ERR_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_ERR)
+#define VLOG_IS_WARN_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_WARN)
+#define VLOG_IS_INFO_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_INFO)
+#define VLOG_IS_DBG_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_DBG)
+
+/* Convenience macros for rate-limiting.
+ * Guaranteed to preserve errno.
+ */
+#define VLOG_ERR_RL(RL, ...) VLOG_RL(RL, VLL_ERR, __VA_ARGS__)
+#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
+#define VLOG_INFO_RL(RL, ...) VLOG_RL(RL, VLL_INFO, __VA_ARGS__)
+#define VLOG_DBG_RL(RL, ...) VLOG_RL(RL, VLL_DBG, __VA_ARGS__)
+
+/* Convenience macros to additionally store log message in buffer
+ * Caller is responsible for freeing *ERRP afterwards */
+#define VLOG_ERR_BUF(ERRP, ...) VLOG_ERRP(ERRP, VLL_ERR, __VA_ARGS__)
+#define VLOG_WARN_BUF(ERRP, ...) VLOG_ERRP(ERRP, VLL_WARN, __VA_ARGS__)
+
+#define VLOG_DROP_ERR(RL) vlog_should_drop(THIS_MODULE, VLL_ERR, RL)
+#define VLOG_DROP_WARN(RL) vlog_should_drop(THIS_MODULE, VLL_WARN, RL)
+#define VLOG_DROP_INFO(RL) vlog_should_drop(THIS_MODULE, VLL_INFO, RL)
+#define VLOG_DROP_DBG(RL) vlog_should_drop(THIS_MODULE, VLL_DBG, RL)
+
+/* Macros for logging at most once per execution. */
+#define VLOG_ERR_ONCE(...) VLOG_ONCE(VLL_ERR, __VA_ARGS__)
+#define VLOG_WARN_ONCE(...) VLOG_ONCE(VLL_WARN, __VA_ARGS__)
+#define VLOG_INFO_ONCE(...) VLOG_ONCE(VLL_INFO, __VA_ARGS__)
+#define VLOG_DBG_ONCE(...) VLOG_ONCE(VLL_DBG, __VA_ARGS__)
+
+/* Command line processing. */
+#define VLOG_OPTION_ENUMS                       \
+        OPT_LOG_FILE,                           \
+        OPT_SYSLOG_TARGET
+
+#define VLOG_LONG_OPTIONS                                               \
+        {"verbose",       optional_argument, NULL, 'v'},                \
+        {"log-file",      optional_argument, NULL, OPT_LOG_FILE},       \
+        {"syslog-target", optional_argument, NULL, OPT_SYSLOG_TARGET}
+
+#define VLOG_OPTION_HANDLERS                    \
+        case 'v':                               \
+            vlog_set_verbosity(optarg);         \
+            break;                              \
+        case OPT_LOG_FILE:                      \
+            vlog_set_log_file(optarg);          \
+            break;                              \
+        case OPT_SYSLOG_TARGET:                 \
+            vlog_set_syslog_target(optarg);     \
+            break;
+
+void vlog_usage(void);
+
+/* Implementation details. */
+#define VLOG(LEVEL, ...)                                \
+    do {                                                \
+        enum vlog_level level__ = LEVEL;                \
+        if (THIS_MODULE->min_level >= level__) {        \
+            vlog(THIS_MODULE, level__, __VA_ARGS__);    \
+        }                                               \
+    } while (0)
+#define VLOG_RL(RL, LEVEL, ...)                                     \
+    do {                                                            \
+        enum vlog_level level__ = LEVEL;                            \
+        if (THIS_MODULE->min_level >= level__) {                    \
+            vlog_rate_limit(THIS_MODULE, level__, RL, __VA_ARGS__); \
+        }                                                           \
+    } while (0)
+#define VLOG_ONCE(LEVEL, ...)                                           \
+    do {                                                                \
+        static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; \
+        if (ovsthread_once_start(&once)) {                              \
+            vlog(THIS_MODULE, LEVEL, __VA_ARGS__);                      \
+            ovsthread_once_done(&once);                                 \
+        }                                                               \
+    } while (0)
+#define VLOG_ERRP(ERRP, LEVEL, ...)                                     \
+    do {                                                                \
+        VLOG(LEVEL, __VA_ARGS__);                                       \
+        if (ERRP) {                                                     \
+            *(ERRP) = xasprintf(__VA_ARGS__);                           \
+        }                                                               \
+    } while (0)
+
+#define VLOG_DEFINE_MODULE__(MODULE)                                    \
+        extern struct vlog_module VLM_##MODULE;                         \
+        struct vlog_module VLM_##MODULE =                               \
+        {                                                               \
+            OVS_LIST_INITIALIZER(&VLM_##MODULE.list),                       \
+            #MODULE,                                        /* name */  \
+            { VLL_INFO, VLL_INFO, VLL_INFO },             /* levels */  \
+            VLL_INFO,                                  /* min_level */  \
+            true                               /* honor_rate_limits */  \
+        };
+
+#ifdef  __cplusplus
+}
+#endif
+
+#endif /* vlog.h */
index ba5f80a..ef5b020 100644 (file)
@@ -265,7 +265,6 @@ lib_libopenvswitch_la_SOURCES = \
        lib/vlandev.c \
        lib/vlandev.h \
        lib/vlog.c \
-       lib/vlog.h \
        lib/vswitch-idl.c \
        lib/vswitch-idl.h \
        lib/vtep-idl.c \
index 9b7c52b..5cb2954 100644 (file)
@@ -18,7 +18,7 @@
 #include <inttypes.h>
 
 #include "backtrace.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(backtrace);
 
index 7f6bf5b..3db1d57 100644 (file)
--- a/lib/bfd.c
+++ b/lib/bfd.c
@@ -44,7 +44,7 @@
 #include "unaligned.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(bfd);
 
index 700969b..e66ceed 100644 (file)
@@ -29,7 +29,7 @@
 #include "ofp-errors.h"
 #include "ofp-util.h"
 #include "openflow/nicira-ext.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(bundle);
 
index bc8be71..23c1c6f 100644 (file)
--- a/lib/cfm.c
+++ b/lib/cfm.c
@@ -36,7 +36,7 @@
 #include "timer.h"
 #include "timeval.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(cfm);
 
index 1985efe..bbc5a4a 100644 (file)
@@ -25,7 +25,7 @@
 #include "ofp-util.h"
 #include "packets.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(classifier);
 
index eb0a83b..2eccdc6 100644 (file)
@@ -22,7 +22,7 @@
 #include "dynamic-string.h"
 #include "ovs-thread.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(command_line);
 
index fe97d69..6121956 100644 (file)
@@ -24,7 +24,7 @@
 #include "timeval.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(coverage);
 
index 3d08222..3b24fca 100644 (file)
@@ -35,7 +35,7 @@
 #include "socket-util.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(daemon_unix);
 
index 3d1907e..cb205ca 100644 (file)
@@ -20,7 +20,7 @@
 #include <stdio.h>
 #include <stdlib.h>
 #include "poll-loop.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(daemon_windows);
 
index 4c7c8e1..4ac32b8 100644 (file)
@@ -19,7 +19,9 @@
 #include <errno.h>
 #include <fcntl.h>
 #include <unistd.h>
-#include "vlog.h"
+#include "util.h"
+#include "ovs-thread.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(daemon);
 
index 3194351..a0e508c 100644 (file)
@@ -66,7 +66,7 @@
 #include "tnl-arp-cache.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(dpif_netdev);
 
index 2492a6b..63bbddc 100644 (file)
@@ -53,7 +53,7 @@
 #include "timeval.h"
 #include "unaligned.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(dpif_netlink);
 #ifdef _WIN32
index 4db3e43..a2696c6 100644 (file)
@@ -47,7 +47,7 @@
 #include "tnl-ports.h"
 #include "util.h"
 #include "valgrind.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(dpif);
 
index f980855..05cc648 100644 (file)
@@ -23,9 +23,9 @@
 #ifdef _WIN32
 #include <Wincrypt.h>
 #endif
-
+#include "util.h"
 #include "socket-util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(entropy);
 
index 199cf6b..62acea0 100644 (file)
@@ -30,7 +30,7 @@
 #include "signals.h"
 #include "socket-util.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 #include "type-props.h"
 
index 95c8104..0663762 100644 (file)
@@ -33,7 +33,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(getopt_long);
 
index 0282a17..915725e 100644 (file)
@@ -20,7 +20,7 @@
 #include <sys/resource.h>
 #include <time.h>
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(getrusage_windows);
 
index 542d8b5..938dbc2 100644 (file)
@@ -21,7 +21,7 @@
 #include "coverage.h"
 #include "random.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(hmap);
 
index d571656..f15adca 100644 (file)
@@ -31,7 +31,7 @@
 #include "reconnect.h"
 #include "stream.h"
 #include "timeval.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(jsonrpc);
 \f
index cc1a582..6f52652 100644 (file)
@@ -30,7 +30,7 @@
 #include "timer.h"
 #include "timeval.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(lacp);
 
index af72ae1..b948af7 100644 (file)
@@ -42,7 +42,7 @@
 #include "simap.h"
 #include "timeval.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(learning_switch);
 
index 1ef6251..26aee33 100644 (file)
@@ -30,7 +30,7 @@
 #include "ovs-thread.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(lockfile);
 
index d99f01c..e84efc6 100644 (file)
@@ -33,7 +33,7 @@
 #include "unaligned.h"
 #include "util.h"
 #include "vlan-bitmap.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 COVERAGE_DEFINE(mcast_snooping_learned);
 COVERAGE_DEFINE(mcast_snooping_expired);
index 6c97e19..3e21eb5 100644 (file)
@@ -24,7 +24,7 @@
 #include "simap.h"
 #include "timeval.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(memory);
 
index 9aa71a3..90dd27c 100644 (file)
@@ -35,7 +35,7 @@
 #include "socket-util.h"
 #include "unaligned.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(meta_flow);
 
index 473c0f6..a10b529 100644 (file)
@@ -61,7 +61,7 @@
 #include "socket-util.h"
 #include "svec.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netdev_bsd);
 
index 4e2d281..0ede200 100644 (file)
@@ -46,7 +46,7 @@
 #include "unaligned.h"
 #include "timeval.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(dpdk);
 static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(5, 20);
index 01ee928..fcb0b77 100644 (file)
@@ -40,7 +40,7 @@
 #include "timeval.h"
 #include "unixctl.h"
 #include "reconnect.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netdev_dummy);
 
index 99425f7..a1e4979 100644 (file)
@@ -71,7 +71,7 @@
 #include "sset.h"
 #include "timer.h"
 #include "unaligned.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netdev_linux);
 
index e6b97fa..91acabb 100644 (file)
@@ -44,7 +44,7 @@
 #include "route-table.h"
 #include "shash.h"
 #include "socket-util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "unaligned.h"
 #include "unixctl.h"
 #include "util.h"
index 465f0c5..c67aaeb 100644 (file)
@@ -28,7 +28,7 @@
 #include "poll-loop.h"
 #include "shash.h"
 #include "svec.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "odp-netlink.h"
 #include "netlink-socket.h"
 #include "netlink.h"
index 4a9c0f5..2bda77f 100644 (file)
@@ -42,7 +42,7 @@
 #include "smap.h"
 #include "sset.h"
 #include "svec.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netdev);
 
index 713082d..45c9188 100644 (file)
@@ -26,7 +26,7 @@
 #include "netlink.h"
 #include "netlink-socket.h"
 #include "ofpbuf.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netlink_notifier);
 
index 2e02c43..e4f153f 100644 (file)
@@ -35,7 +35,7 @@
 #include "seq.h"
 #include "socket-util.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netlink_socket);
 
index 24b2168..b6f7d45 100644 (file)
@@ -26,7 +26,7 @@
 #include "ofpbuf.h"
 #include "timeval.h"
 #include "unaligned.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netlink);
 
index 72fa29b..2ad3cf2 100644 (file)
@@ -33,7 +33,7 @@
 #include "shash.h"
 #include "unaligned.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(nx_match);
 
index a89d5f8..b8fda49 100644 (file)
@@ -37,7 +37,7 @@
 #include "timeval.h"
 #include "unaligned.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(odp_util);
 
index 1b7625d..4680d81 100644 (file)
@@ -30,7 +30,7 @@
 #include "ofpbuf.h"
 #include "unaligned.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ofp_actions);
 
index c803494..ce85f67 100644 (file)
@@ -23,7 +23,7 @@
 #include "ofp-util.h"
 #include "ofpbuf.h"
 #include "openflow/openflow.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ofp_errors);
 
index 4dfc657..364ce76 100644 (file)
@@ -24,7 +24,7 @@
 #include "openflow/nicira-ext.h"
 #include "openflow/openflow.h"
 #include "ovs-thread.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ofp_msgs);
 
index b32234a..986659e 100644 (file)
@@ -42,7 +42,7 @@
 #include "random.h"
 #include "unaligned.h"
 #include "type-props.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "bitmap.h"
 
 VLOG_DEFINE_THIS_MODULE(ofp_util);
index 07cbc7b..dabdd18 100644 (file)
@@ -32,7 +32,7 @@
 #include "hmap.h"
 #include "list.h"
 #include "ovs-thread.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovs_numa);
 
index 1cf69ae..5276981 100644 (file)
@@ -22,7 +22,7 @@
 #include "poll-loop.h"
 #include "seq.h"
 #include "timeval.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovs_rcu);
 
index 3dd0ed6..7d38c80 100644 (file)
@@ -25,6 +25,7 @@
 #include <unistd.h>
 #include "compiler.h"
 #include "hash.h"
+#include "list.h"
 #include "netdev-dpdk.h"
 #include "ovs-rcu.h"
 #include "poll-loop.h"
@@ -38,7 +39,7 @@
  * cut-and-paste.  Since "sparse" is just a checker, not a compiler, it
  * doesn't matter that we don't define them. */
 #else
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovs_thread);
 
index eb9f1ee..8be4d16 100644 (file)
@@ -23,7 +23,7 @@
 #include "dynamic-string.h"
 #include "json.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovsdb_error);
 
index e1857b6..9c25dbc 100644 (file)
@@ -34,7 +34,7 @@
 #include "poll-loop.h"
 #include "shash.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovsdb_idl);
 
index 191e690..58c60b1 100644 (file)
@@ -29,7 +29,7 @@
 #include "packets.h"
 #include "timeval.h"
 #include "unaligned.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(pcap);
 
index 8747c61..3c4b55c 100644 (file)
@@ -29,7 +29,7 @@
 #include "seq.h"
 #include "socket-util.h"
 #include "timeval.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "hmap.h"
 #include "hash.h"
 
index f6b665e..e89f9ca 100644 (file)
@@ -34,7 +34,7 @@
 #include "signals.h"
 #include "socket-util.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(process);
 
index 9d8c46f..8e07b8e 100644 (file)
@@ -30,7 +30,7 @@
 #include "timeval.h"
 #include "util.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(rconn);
 
index 5296c5c..bab821e 100644 (file)
@@ -20,7 +20,7 @@
 #include <stdlib.h>
 
 #include "poll-loop.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(reconnect);
 
index 2c3f64c..1459b7d 100644 (file)
@@ -31,7 +31,7 @@
 #include "ofpbuf.h"
 #include "ovs-router.h"
 #include "rtnetlink-link.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(route_table);
 
index df357a7..3202018 100644 (file)
@@ -42,7 +42,7 @@
 #include "seq.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(rstp_sm);
 
index 8a7891a..3b314b4 100644 (file)
@@ -44,7 +44,7 @@
 #include "seq.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(rstp);
 
index d33f64b..c3dbdca 100644 (file)
@@ -26,7 +26,7 @@
 #include "coverage.h"
 #include "socket-util.h"
 #include "poll-loop.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "rtbsd.h"
 
 VLOG_DEFINE_THIS_MODULE(rtbsd);
index 85e5c79..3af6187 100644 (file)
@@ -25,7 +25,7 @@
 #include "socket-util.h"
 #include "type-props.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(signals);
 
index c56654e..afab195 100644 (file)
@@ -28,7 +28,7 @@
 #include "fatal-signal.h"
 #include "random.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(socket_util_unix);
 
index 755ce4e..8949da7 100644 (file)
@@ -37,7 +37,7 @@
 #include "packets.h"
 #include "poll-loop.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #ifdef __linux__
 #include <linux/if_packet.h>
 #endif
index 9e02acc..1e88cba 100644 (file)
--- a/lib/stp.c
+++ b/lib/stp.c
 #include "byte-order.h"
 #include "connectivity.h"
 #include "ofpbuf.h"
+#include "ovs-atomic.h"
 #include "packets.h"
 #include "seq.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(stp);
 
index 1b80701..a6a10d4 100644 (file)
@@ -29,7 +29,7 @@
 #include "util.h"
 #include "stream-provider.h"
 #include "stream.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(stream_fd);
 
index 9dda987..26fcc97 100644 (file)
@@ -16,7 +16,7 @@
 
 #include <config.h>
 #include "stream-ssl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(stream_nossl);
 \f
index 353f171..47c5312 100644 (file)
@@ -45,7 +45,7 @@
 #include "stream-provider.h"
 #include "stream.h"
 #include "timeval.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 #ifdef _WIN32
 /* Ref: https://www.openssl.org/support/faq.html#PROG2
index e58c5ad..3e19dbb 100644 (file)
@@ -31,7 +31,7 @@
 #include "util.h"
 #include "stream-provider.h"
 #include "stream-fd.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(stream_tcp);
 
index 29077c6..daade3f 100644 (file)
@@ -33,7 +33,7 @@
 #include "util.h"
 #include "stream-provider.h"
 #include "stream-fd.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(stream_unix);
 
index 4e512da..ca469fb 100644 (file)
@@ -37,7 +37,7 @@
 #include "random.h"
 #include "socket-util.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(stream);
 
index d083ebb..7fe8beb 100644 (file)
@@ -21,7 +21,7 @@
 #include <string.h>
 #include "dynamic-string.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(svec);
 
index 99f9b94..6173aff 100644 (file)
@@ -37,7 +37,7 @@
 #include "seq.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(timeval);
 
index 76195ec..59ec0bc 100644 (file)
@@ -36,7 +36,7 @@
 #include "unaligned.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 
 /* In seconds */
index 9fb2e85..b47f35a 100644 (file)
@@ -29,7 +29,7 @@
 #include "stream.h"
 #include "stream-provider.h"
 #include "svec.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(unixctl);
 
index 453ade6..6b51fa8 100644 (file)
@@ -33,7 +33,7 @@
 #include "ovs-rcu.h"
 #include "ovs-thread.h"
 #include "socket-util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #ifdef HAVE_PTHREAD_SET_NAME_NP
 #include <pthread_np.h>
 #endif
index 9347b5e..32c25cd 100644 (file)
@@ -30,7 +30,7 @@
 #include "util.h"
 #include "vconn-provider.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(vconn_stream);
 
index 97e8dd2..2ffbd8d 100644 (file)
@@ -37,7 +37,7 @@
 #include "poll-loop.h"
 #include "random.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "socket-util.h"
 
 VLOG_DEFINE_THIS_MODULE(vconn);
index d2f5a37..99c99de 100644 (file)
@@ -27,7 +27,7 @@
 #include "hash.h"
 #include "shash.h"
 #include "socket-util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(vlandev);
 
index 60ce3b4..dbf46c5 100644 (file)
@@ -15,7 +15,7 @@
  */
 
 #include <config.h>
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include <assert.h>
 #include <ctype.h>
 #include <errno.h>
@@ -170,6 +170,11 @@ vlog_get_facility_val(const char *name)
     return i;
 }
 
+void vlog_insert_module(struct ovs_list *vlog)
+{
+    list_insert(&vlog_modules, vlog);
+}
+
 /* Returns the name for logging module 'module'. */
 const char *
 vlog_get_module_name(const struct vlog_module *module)
diff --git a/lib/vlog.h b/lib/vlog.h
deleted file mode 100644 (file)
index a8f7b01..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at:
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-#ifndef VLOG_H
-#define VLOG_H 1
-
-/* Logging.
- *
- *
- * Thread-safety
- * =============
- *
- * Fully thread safe.
- */
-
-#include <limits.h>
-#include <stdarg.h>
-#include <stdbool.h>
-#include <time.h>
-#include "compiler.h"
-#include "ovs-thread.h"
-#include "sat-math.h"
-#include "openvswitch/token-bucket.h"
-#include "util.h"
-#include "list.h"
-
-#ifdef  __cplusplus
-extern "C" {
-#endif
-
-/* Logging severity levels.
- *
- * ovs-appctl(8) defines each of the log levels. */
-#define VLOG_LEVELS                             \
-    VLOG_LEVEL(OFF,  LOG_ALERT,   1)            \
-    VLOG_LEVEL(EMER, LOG_ALERT,   1)            \
-    VLOG_LEVEL(ERR,  LOG_ERR,     3)            \
-    VLOG_LEVEL(WARN, LOG_WARNING, 4)            \
-    VLOG_LEVEL(INFO, LOG_NOTICE,  5)            \
-    VLOG_LEVEL(DBG,  LOG_DEBUG,   7)
-enum vlog_level {
-#define VLOG_LEVEL(NAME, SYSLOG_LEVEL, RFC5424_LEVEL) VLL_##NAME,
-    VLOG_LEVELS
-#undef VLOG_LEVEL
-    VLL_N_LEVELS
-};
-
-const char *vlog_get_level_name(enum vlog_level);
-enum vlog_level vlog_get_level_val(const char *name);
-
-/* Facilities that we can log to. */
-#define VLOG_FACILITIES                                                 \
-    VLOG_FACILITY(SYSLOG, "ovs|%05N|%c%T|%p|%m")                        \
-    VLOG_FACILITY(CONSOLE, "%D{%Y-%m-%dT%H:%M:%SZ}|%05N|%c%T|%p|%m")    \
-    VLOG_FACILITY(FILE, "%D{%Y-%m-%dT%H:%M:%S.###Z}|%05N|%c%T|%p|%m")
-enum vlog_facility {
-#define VLOG_FACILITY(NAME, PATTERN) VLF_##NAME,
-    VLOG_FACILITIES
-#undef VLOG_FACILITY
-    VLF_N_FACILITIES,
-    VLF_ANY_FACILITY = -1
-};
-
-const char *vlog_get_facility_name(enum vlog_facility);
-enum vlog_facility vlog_get_facility_val(const char *name);
-
-/* A log module. */
-struct vlog_module {
-    struct ovs_list list;
-    const char *name;             /* User-visible name. */
-    int levels[VLF_N_FACILITIES]; /* Minimum log level for each facility. */
-    int min_level;                /* Minimum log level for any facility. */
-    bool honor_rate_limits;       /* Set false to ignore rate limits. */
-};
-
-/* Global list of all logging modules */
-extern struct ovs_list vlog_modules;
-
-/* Creates and initializes a global instance of a module named MODULE. */
-#define VLOG_DEFINE_MODULE(MODULE)                                      \
-        VLOG_DEFINE_MODULE__(MODULE)                                    \
-        OVS_CONSTRUCTOR(init_##MODULE) {                                \
-                list_insert(&vlog_modules, &VLM_##MODULE.list);         \
-        }                                                               \
-
-const char *vlog_get_module_name(const struct vlog_module *);
-struct vlog_module *vlog_module_from_name(const char *name);
-
-/* Rate-limiter for log messages. */
-struct vlog_rate_limit {
-    struct token_bucket token_bucket;
-    time_t first_dropped;       /* Time first message was dropped. */
-    time_t last_dropped;        /* Time of most recent message drop. */
-    unsigned int n_dropped;     /* Number of messages dropped. */
-    struct ovs_mutex mutex;     /* Mutual exclusion for rate limit. */
-};
-
-/* Number of tokens to emit a message.  We add 'rate' tokens per millisecond,
- * thus 60,000 tokens are required to emit one message per minute. */
-#define VLOG_MSG_TOKENS (60 * 1000)
-
-/* Initializer for a struct vlog_rate_limit, to set up a maximum rate of RATE
- * messages per minute and a maximum burst size of BURST messages. */
-#define VLOG_RATE_LIMIT_INIT(RATE, BURST)                               \
-        {                                                               \
-            TOKEN_BUCKET_INIT(RATE, OVS_SAT_MUL(BURST, VLOG_MSG_TOKENS)),\
-            0,                              /* first_dropped */         \
-            0,                              /* last_dropped */          \
-            0,                              /* n_dropped */             \
-            OVS_MUTEX_INITIALIZER           /* mutex */                 \
-        }
-
-/* Configuring how each module logs messages. */
-enum vlog_level vlog_get_level(const struct vlog_module *, enum vlog_facility);
-void vlog_set_levels(struct vlog_module *,
-                     enum vlog_facility, enum vlog_level);
-char *vlog_set_levels_from_string(const char *) OVS_WARN_UNUSED_RESULT;
-void vlog_set_levels_from_string_assert(const char *);
-char *vlog_get_levels(void);
-bool vlog_is_enabled(const struct vlog_module *, enum vlog_level);
-bool vlog_should_drop(const struct vlog_module *, enum vlog_level,
-                      struct vlog_rate_limit *);
-void vlog_set_verbosity(const char *arg);
-
-/* Configuring log facilities. */
-void vlog_set_pattern(enum vlog_facility, const char *pattern);
-int vlog_set_log_file(const char *file_name);
-int vlog_reopen_log_file(void);
-
-/* Configure syslog target. */
-void vlog_set_syslog_target(const char *target);
-
-/* Initialization. */
-void vlog_init(void);
-void vlog_enable_async(void);
-
-/* Functions for actual logging. */
-void vlog(const struct vlog_module *, enum vlog_level, const char *format, ...)
-    OVS_PRINTF_FORMAT (3, 4);
-void vlog_valist(const struct vlog_module *, enum vlog_level,
-                 const char *, va_list)
-    OVS_PRINTF_FORMAT (3, 0);
-
-OVS_NO_RETURN void vlog_fatal(const struct vlog_module *, const char *format, ...)
-    OVS_PRINTF_FORMAT (2, 3);
-OVS_NO_RETURN void vlog_fatal_valist(const struct vlog_module *,
-                                 const char *format, va_list)
-    OVS_PRINTF_FORMAT (2, 0);
-
-OVS_NO_RETURN void vlog_abort(const struct vlog_module *, const char *format, ...)
-    OVS_PRINTF_FORMAT (2, 3);
-OVS_NO_RETURN void vlog_abort_valist(const struct vlog_module *,
-                                 const char *format, va_list)
-    OVS_PRINTF_FORMAT (2, 0);
-
-void vlog_rate_limit(const struct vlog_module *, enum vlog_level,
-                     struct vlog_rate_limit *, const char *, ...)
-    OVS_PRINTF_FORMAT (4, 5);
-
-/* Creates and initializes a global instance of a module named MODULE, and
- * defines a static variable named THIS_MODULE that points to it, for use with
- * the convenience macros below. */
-#define VLOG_DEFINE_THIS_MODULE(MODULE)                                 \
-        VLOG_DEFINE_MODULE(MODULE);                                     \
-        static struct vlog_module *const THIS_MODULE = &VLM_##MODULE
-
-/* Convenience macros.  These assume that THIS_MODULE points to a "struct
- * vlog_module" for the current module, as set up by e.g. the
- * VLOG_DEFINE_MODULE macro above.
- *
- * Guaranteed to preserve errno.
- */
-#define VLOG_FATAL(...) vlog_fatal(THIS_MODULE, __VA_ARGS__)
-#define VLOG_ABORT(...) vlog_abort(THIS_MODULE, __VA_ARGS__)
-#define VLOG_EMER(...) VLOG(VLL_EMER, __VA_ARGS__)
-#define VLOG_ERR(...) VLOG(VLL_ERR, __VA_ARGS__)
-#define VLOG_WARN(...) VLOG(VLL_WARN, __VA_ARGS__)
-#define VLOG_INFO(...) VLOG(VLL_INFO, __VA_ARGS__)
-#define VLOG_DBG(...) VLOG(VLL_DBG, __VA_ARGS__)
-
-/* More convenience macros, for testing whether a given level is enabled in
- * THIS_MODULE.  When constructing a log message is expensive, this enables it
- * to be skipped. */
-#define VLOG_IS_ERR_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_ERR)
-#define VLOG_IS_WARN_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_WARN)
-#define VLOG_IS_INFO_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_INFO)
-#define VLOG_IS_DBG_ENABLED() vlog_is_enabled(THIS_MODULE, VLL_DBG)
-
-/* Convenience macros for rate-limiting.
- * Guaranteed to preserve errno.
- */
-#define VLOG_ERR_RL(RL, ...) VLOG_RL(RL, VLL_ERR, __VA_ARGS__)
-#define VLOG_WARN_RL(RL, ...) VLOG_RL(RL, VLL_WARN, __VA_ARGS__)
-#define VLOG_INFO_RL(RL, ...) VLOG_RL(RL, VLL_INFO, __VA_ARGS__)
-#define VLOG_DBG_RL(RL, ...) VLOG_RL(RL, VLL_DBG, __VA_ARGS__)
-
-/* Convenience macros to additionally store log message in buffer
- * Caller is responsible for freeing *ERRP afterwards */
-#define VLOG_ERR_BUF(ERRP, ...) VLOG_ERRP(ERRP, VLL_ERR, __VA_ARGS__)
-#define VLOG_WARN_BUF(ERRP, ...) VLOG_ERRP(ERRP, VLL_WARN, __VA_ARGS__)
-
-#define VLOG_DROP_ERR(RL) vlog_should_drop(THIS_MODULE, VLL_ERR, RL)
-#define VLOG_DROP_WARN(RL) vlog_should_drop(THIS_MODULE, VLL_WARN, RL)
-#define VLOG_DROP_INFO(RL) vlog_should_drop(THIS_MODULE, VLL_INFO, RL)
-#define VLOG_DROP_DBG(RL) vlog_should_drop(THIS_MODULE, VLL_DBG, RL)
-
-/* Macros for logging at most once per execution. */
-#define VLOG_ERR_ONCE(...) VLOG_ONCE(VLL_ERR, __VA_ARGS__)
-#define VLOG_WARN_ONCE(...) VLOG_ONCE(VLL_WARN, __VA_ARGS__)
-#define VLOG_INFO_ONCE(...) VLOG_ONCE(VLL_INFO, __VA_ARGS__)
-#define VLOG_DBG_ONCE(...) VLOG_ONCE(VLL_DBG, __VA_ARGS__)
-
-/* Command line processing. */
-#define VLOG_OPTION_ENUMS                       \
-        OPT_LOG_FILE,                           \
-        OPT_SYSLOG_TARGET
-
-#define VLOG_LONG_OPTIONS                                               \
-        {"verbose",       optional_argument, NULL, 'v'},                \
-        {"log-file",      optional_argument, NULL, OPT_LOG_FILE},       \
-        {"syslog-target", optional_argument, NULL, OPT_SYSLOG_TARGET}
-
-#define VLOG_OPTION_HANDLERS                    \
-        case 'v':                               \
-            vlog_set_verbosity(optarg);         \
-            break;                              \
-        case OPT_LOG_FILE:                      \
-            vlog_set_log_file(optarg);          \
-            break;                              \
-        case OPT_SYSLOG_TARGET:                 \
-            vlog_set_syslog_target(optarg);     \
-            break;
-
-void vlog_usage(void);
-
-/* Implementation details. */
-#define VLOG(LEVEL, ...)                                \
-    do {                                                \
-        enum vlog_level level__ = LEVEL;                \
-        if (THIS_MODULE->min_level >= level__) {        \
-            vlog(THIS_MODULE, level__, __VA_ARGS__);    \
-        }                                               \
-    } while (0)
-#define VLOG_RL(RL, LEVEL, ...)                                     \
-    do {                                                            \
-        enum vlog_level level__ = LEVEL;                            \
-        if (THIS_MODULE->min_level >= level__) {                    \
-            vlog_rate_limit(THIS_MODULE, level__, RL, __VA_ARGS__); \
-        }                                                           \
-    } while (0)
-#define VLOG_ONCE(LEVEL, ...)                                           \
-    do {                                                                \
-        static struct ovsthread_once once = OVSTHREAD_ONCE_INITIALIZER; \
-        if (ovsthread_once_start(&once)) {                              \
-            vlog(THIS_MODULE, LEVEL, __VA_ARGS__);                      \
-            ovsthread_once_done(&once);                                 \
-        }                                                               \
-    } while (0)
-#define VLOG_ERRP(ERRP, LEVEL, ...)                                     \
-    do {                                                                \
-        VLOG(LEVEL, __VA_ARGS__);                                       \
-        if (ERRP) {                                                     \
-            *(ERRP) = xasprintf(__VA_ARGS__);                           \
-        }                                                               \
-    } while (0)
-
-#define VLOG_DEFINE_MODULE__(MODULE)                                    \
-        extern struct vlog_module VLM_##MODULE;                         \
-        struct vlog_module VLM_##MODULE =                               \
-        {                                                               \
-            OVS_LIST_INITIALIZER(&VLM_##MODULE.list),                       \
-            #MODULE,                                        /* name */  \
-            { VLL_INFO, VLL_INFO, VLL_INFO },             /* levels */  \
-            VLL_INFO,                                  /* min_level */  \
-            true                               /* honor_rate_limits */  \
-        };
-
-#ifdef  __cplusplus
-}
-#endif
-
-
-#endif /* vlog.h */
index 72611ae..c4b3a3a 100644 (file)
@@ -45,7 +45,7 @@
 #include "shash.h"
 #include "timeval.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(bond);
 
index 001ad14..c33af52 100644 (file)
@@ -35,7 +35,7 @@
 #include "stream.h"
 #include "timeval.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 #include "bundles.h"
 
index 4501d2b..770151c 100644 (file)
@@ -26,7 +26,7 @@
 #include "socket-util.h"
 #include "sset.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(collectors);
 
index cf79fd2..35aa980 100644 (file)
@@ -40,7 +40,7 @@
 #include "stream.h"
 #include "timeval.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 #include "bundles.h"
 
index b29e5af..2aacc13 100644 (file)
@@ -33,7 +33,7 @@
 #include "rconn.h"
 #include "timeval.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(fail_open);
 
index e25a27a..bde893a 100644 (file)
@@ -37,7 +37,7 @@
 #include "packets.h"
 #include "poll-loop.h"
 #include "timeval.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(in_band);
 
index 5b1c8fe..99bd6b8 100644 (file)
@@ -33,7 +33,7 @@
 #include "socket-util.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(netflow);
 
index 33e9f3f..3ba6dce 100644 (file)
@@ -32,7 +32,7 @@
 #include "util.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ipfix);
 
index fcc7758..e0f3dcd 100644 (file)
@@ -22,7 +22,7 @@
 #include "hmapx.h"
 #include "ofproto.h"
 #include "vlan-bitmap.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ofproto_dpif_mirror);
 
index abe6793..14de027 100644 (file)
@@ -33,7 +33,7 @@
 #include "seq.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ofproto_dpif_monitor);
 
index 35667ca..539a293 100644 (file)
@@ -37,7 +37,7 @@
 #include "sflow_api.h"
 #include "socket-util.h"
 #include "timeval.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "lib/odp-util.h"
 #include "ofproto-provider.h"
 #include "lacp.h"
index 75a0e61..89de528 100644 (file)
@@ -38,7 +38,7 @@
 #include "poll-loop.h"
 #include "seq.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 #define MAX_QUEUE_LENGTH 512
 #define UPCALL_MAX_BATCH 64
index b357cfa..c1327a6 100644 (file)
@@ -56,7 +56,7 @@
 #include "ovs-router.h"
 #include "tnl-ports.h"
 #include "tunnel.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 COVERAGE_DEFINE(xlate_actions);
 COVERAGE_DEFINE(xlate_actions_oversize);
index 325c022..2165bda 100644 (file)
@@ -68,7 +68,7 @@
 #include "unaligned.h"
 #include "unixctl.h"
 #include "vlan-bitmap.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ofproto_dpif);
 
index ab4918f..75f0b54 100644 (file)
@@ -57,7 +57,7 @@
 #include "timeval.h"
 #include "unaligned.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "bundles.h"
 
 VLOG_DEFINE_THIS_MODULE(ofproto);
index 38ec348..5ba8c51 100644 (file)
@@ -24,7 +24,7 @@
 #include "timeval.h"
 #include "util.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(pktbuf);
 
index 769f533..d079a24 100644 (file)
@@ -36,7 +36,7 @@
 #include "tnl-arp-cache.h"
 #include "tnl-ports.h"
 #include "tunnel.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "unaligned.h"
 #include "ofproto-dpif.h"
 
index 7c8ac6f..8c3c31b 100644 (file)
@@ -35,7 +35,7 @@
 #include "transaction.h"
 #include "uuid.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovsdb_file);
 
index 989af3b..e406758 100644 (file)
@@ -37,7 +37,7 @@
 #include "timeval.h"
 #include "transaction.h"
 #include "trigger.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovsdb_jsonrpc_server);
 
index 2d4c4db..e3b08c7 100644 (file)
@@ -47,7 +47,7 @@
 #include "timeval.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovsdb_client);
 
index faa7741..d5277b1 100644 (file)
@@ -53,7 +53,7 @@
 #include "trigger.h"
 #include "util.h"
 #include "unixctl.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(ovsdb_server);
 
index a33969b..1711665 100644 (file)
@@ -39,7 +39,7 @@
 #include "table.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 /* -m, --more: Verbosity level for "show-log" command output. */
 static int show_log_verbosity;
index 63340c7..19e8315 100644 (file)
@@ -30,7 +30,7 @@
 #include "pcap-file.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 static void
 test_flows_main(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
index fe7d869..2aad5c5 100644 (file)
@@ -31,7 +31,7 @@
 #include "stream.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 OVS_NO_RETURN static void usage(void);
 static void parse_options(int argc, char *argv[]);
index 71ccbc6..d0c8dc4 100644 (file)
@@ -26,7 +26,7 @@
 #include "process.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 struct test {
     const char *name;
index b1b7717..b918d15 100644 (file)
@@ -32,7 +32,7 @@
 #include "socket-util.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 OVS_NO_RETURN static void usage(void);
 static void parse_options(int argc, char *argv[]);
index b38c2eb..48ad56a 100644 (file)
@@ -25,7 +25,7 @@
 #include "ofpbuf.h"
 #include "ovstest.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 static int
 parse_keys(bool wc_keys)
index b113b9d..99f41c1 100644 (file)
@@ -49,7 +49,7 @@
 #include "tests/idltest.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 OVS_NO_RETURN static void usage(void);
 static void parse_options(int argc, char *argv[]);
index 61f95a5..6e165a2 100644 (file)
@@ -26,7 +26,7 @@
 #include "ovstest.h"
 #include "svec.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 static struct reconnect *reconnect;
 static int now;
index c5e7a56..005423b 100644 (file)
@@ -10,7 +10,7 @@
 #include "ofpbuf.h"
 #include "ovstest.h"
 #include "packets.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 #define MAX_PORTS 10
 
index 0bd5570..959cd6c 100644 (file)
@@ -35,7 +35,7 @@
 #include "socket-util.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 OVS_NO_RETURN static void usage(void);
 static void parse_options(int argc, char *argv[]);
index 88a138d..6250c54 100644 (file)
@@ -26,7 +26,7 @@
 #include "ofpbuf.h"
 #include "ovstest.h"
 #include "packets.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 struct bpdu {
     int port_no;
index 74bc5c4..2c985e7 100644 (file)
@@ -27,7 +27,7 @@
 #include "command-line.h"
 #include "ovstest.h"
 #include "random.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 static void
 check_log_2_floor(uint32_t x, int n)
index c786953..b5ba172 100644 (file)
@@ -36,7 +36,7 @@
 #include "stream-ssl.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 struct fake_pvconn {
     const char *type;
index 99b060c..dc5d8c4 100644 (file)
@@ -29,7 +29,7 @@
 #include "poll-loop.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 static const struct nl_policy rtnlgrp_link_policy[] = {
     [IFLA_IFNAME] = { .type = NL_A_STRING, .optional = false },
index 943efc3..5c39a8f 100644 (file)
@@ -31,7 +31,7 @@
 #include "timeval.h"
 #include "unixctl.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 static void usage(void);
 static const char *parse_command_line(int argc, char *argv[]);
index 010d686..a092746 100644 (file)
@@ -31,7 +31,7 @@
 #include "socket-util.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 #define DEFAULT_PORT 6630
 
index ef4550b..404a428 100644 (file)
@@ -40,7 +40,7 @@
 #include "packets.h"
 #include "timeval.h"
 #include "util.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 static struct dpctl_params dpctl_p;
 
index 5e6afae..1e349ea 100644 (file)
@@ -60,7 +60,7 @@
 #include "unixctl.h"
 #include "util.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "meta-flow.h"
 #include "sort.h"
 
index 5a5923b..2c75b41 100644 (file)
@@ -41,7 +41,7 @@
 #include "unixctl.h"
 #include "util.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "socket-util.h"
 #include "ofp-util.h"
 
index 2c272ed..41d8f9b 100644 (file)
@@ -48,7 +48,7 @@
 #include "timeval.h"
 #include "util.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(vsctl);
 
index 228ee91..4d84732 100644 (file)
@@ -60,7 +60,7 @@
 #include "vlandev.h"
 #include "lib/vswitch-idl.h"
 #include "xenserver.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "sflow_api.h"
 #include "vlan-bitmap.h"
 #include "packets.h"
index 392e2c7..9e406c4 100644 (file)
@@ -46,7 +46,7 @@
 #include "unixctl.h"
 #include "util.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 #include "lib/vswitch-idl.h"
 #include "lib/netdev-dpdk.h"
 
index 42ac01a..b8a8855 100644 (file)
@@ -42,7 +42,7 @@
 #include "shash.h"
 #include "smap.h"
 #include "timeval.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(system_stats);
 
index bc57f0e..a1a6231 100644 (file)
@@ -23,7 +23,8 @@
 #include <unistd.h>
 #include "dynamic-string.h"
 #include "process.h"
-#include "vlog.h"
+#include "util.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(xenserver);
 
index afc7f38..14de5b5 100644 (file)
@@ -48,7 +48,7 @@
 #include "timeval.h"
 #include "util.h"
 #include "vconn.h"
-#include "vlog.h"
+#include "openvswitch/vlog.h"
 
 VLOG_DEFINE_THIS_MODULE(vtep_ctl);