[ovs-dev] [PATCH 5/5] fatal-signal: SIGPIPE for Windows.
Gurucharan Shetty
shettyg at nicira.com
Wed Feb 26 18:52:00 UTC 2014
Windows does not have a SIGPIPE. We ignore SIGPIPE for
Linux. To compile on Windows, carve out a new function
to ignore SIGPIPE on Linux.
Signed-off-by: Gurucharan Shetty <gshetty at nicira.com>
---
lib/fatal-signal.c | 8 ++++++++
lib/fatal-signal.h | 1 +
ovsdb/ovsdb-client.c | 3 ++-
ovsdb/ovsdb-server.c | 3 ++-
ovsdb/ovsdb-tool.c | 3 ++-
tests/test-controller.c | 3 ++-
tests/test-vconn.c | 3 ++-
utilities/ovs-dpctl.c | 3 ++-
utilities/ovs-ofctl.c | 3 ++-
utilities/ovs-vsctl.c | 3 ++-
vswitchd/ovs-vswitchd.c | 3 ++-
vtep/vtep-ctl.c | 3 ++-
12 files changed, 29 insertions(+), 10 deletions(-)
diff --git a/lib/fatal-signal.c b/lib/fatal-signal.c
index 6b3dd20..df67a09 100644
--- a/lib/fatal-signal.c
+++ b/lib/fatal-signal.c
@@ -218,6 +218,14 @@ fatal_signal_wait(void)
poll_fd_wait_event(signal_fds[0], wevent, POLLIN);
}
+void
+fatal_ignore_sigpipe(void)
+{
+#ifndef _WIN32
+ signal(SIGPIPE, SIG_IGN);
+#endif
+}
+
static void
atexit_handler(void)
{
diff --git a/lib/fatal-signal.h b/lib/fatal-signal.h
index b458d3d..caf24ec 100644
--- a/lib/fatal-signal.h
+++ b/lib/fatal-signal.h
@@ -27,6 +27,7 @@ void fatal_signal_add_hook(void (*hook_cb)(void *aux),
void fatal_signal_fork(void);
void fatal_signal_run(void);
void fatal_signal_wait(void);
+void fatal_ignore_sigpipe(void);
/* Convenience functions for unlinking files upon termination.
*
diff --git a/ovsdb/ovsdb-client.c b/ovsdb/ovsdb-client.c
index f149eec..d60d7ca 100644
--- a/ovsdb/ovsdb-client.c
+++ b/ovsdb/ovsdb-client.c
@@ -31,6 +31,7 @@
#include "daemon.h"
#include "dirs.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "json.h"
#include "jsonrpc.h"
#include "lib/table.h"
@@ -88,7 +89,7 @@ main(int argc, char *argv[])
proctitle_init(argc, argv);
set_program_name(argv[0]);
parse_options(argc, argv);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
if (optind >= argc) {
ovs_fatal(0, "missing command name; use --help for help");
diff --git a/ovsdb/ovsdb-server.c b/ovsdb/ovsdb-server.c
index bdcdad9..6de77e4 100644
--- a/ovsdb/ovsdb-server.c
+++ b/ovsdb/ovsdb-server.c
@@ -27,6 +27,7 @@
#include "dirs.h"
#include "dummy.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "file.h"
#include "hash.h"
#include "json.h"
@@ -137,7 +138,7 @@ main(int argc, char *argv[])
proctitle_init(argc, argv);
set_program_name(argv[0]);
service_start(&argc, &argv);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
process_init();
parse_options(&argc, &argv, &remotes, &unixctl_path, &run_command);
diff --git a/ovsdb/ovsdb-tool.c b/ovsdb/ovsdb-tool.c
index 5e2b71b..2ae782e 100644
--- a/ovsdb/ovsdb-tool.c
+++ b/ovsdb/ovsdb-tool.c
@@ -27,6 +27,7 @@
#include "compiler.h"
#include "dirs.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "file.h"
#include "lockfile.h"
#include "log.h"
@@ -56,7 +57,7 @@ main(int argc, char *argv[])
{
set_program_name(argv[0]);
parse_options(argc, argv);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
run_command(argc - optind, argv + optind, get_all_commands());
return 0;
}
diff --git a/tests/test-controller.c b/tests/test-controller.c
index f487d8c..a615ab4 100644
--- a/tests/test-controller.c
+++ b/tests/test-controller.c
@@ -27,6 +27,7 @@
#include "command-line.h"
#include "compiler.h"
#include "daemon.h"
+#include "fatal-signal.h"
#include "learning-switch.h"
#include "ofp-parse.h"
#include "ofp-version-opt.h"
@@ -105,7 +106,7 @@ main(int argc, char *argv[])
proctitle_init(argc, argv);
set_program_name(argv[0]);
parse_options(argc, argv);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
if (argc - optind < 1) {
ovs_fatal(0, "at least one vconn argument required; "
diff --git a/tests/test-vconn.c b/tests/test-vconn.c
index f54a0df..76757f4 100644
--- a/tests/test-vconn.c
+++ b/tests/test-vconn.c
@@ -22,6 +22,7 @@
#include <stdlib.h>
#include <unistd.h>
#include "command-line.h"
+#include "fatal-signal.h"
#include "ofp-msgs.h"
#include "ofp-util.h"
#include "ofpbuf.h"
@@ -436,7 +437,7 @@ main(int argc, char *argv[])
set_program_name(argv[0]);
vlog_set_levels(NULL, VLF_ANY_FACILITY, VLL_EMER);
vlog_set_levels(NULL, VLF_CONSOLE, VLL_DBG);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
time_alarm(10);
diff --git a/utilities/ovs-dpctl.c b/utilities/ovs-dpctl.c
index 3b1dff1..66f87fe 100644
--- a/utilities/ovs-dpctl.c
+++ b/utilities/ovs-dpctl.c
@@ -35,6 +35,7 @@
#include "dirs.h"
#include "dpif.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "flow.h"
#include "match.h"
#include "netdev.h"
@@ -73,7 +74,7 @@ main(int argc, char *argv[])
{
set_program_name(argv[0]);
parse_options(argc, argv);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
run_command(argc - optind, argv + optind, get_all_commands());
return 0;
}
diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c
index 69dd34f..4ab9ca4 100644
--- a/utilities/ovs-ofctl.c
+++ b/utilities/ovs-ofctl.c
@@ -36,6 +36,7 @@
#include "compiler.h"
#include "dirs.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "nx-match.h"
#include "odp-util.h"
#include "ofp-actions.h"
@@ -113,7 +114,7 @@ main(int argc, char *argv[])
{
set_program_name(argv[0]);
parse_options(argc, argv);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
run_command(argc - optind, argv + optind, get_all_commands());
return 0;
}
diff --git a/utilities/ovs-vsctl.c b/utilities/ovs-vsctl.c
index c563eee..62a66c5 100644
--- a/utilities/ovs-vsctl.c
+++ b/utilities/ovs-vsctl.c
@@ -31,6 +31,7 @@
#include "compiler.h"
#include "dirs.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "hash.h"
#include "json.h"
#include "ovsdb-data.h"
@@ -176,7 +177,7 @@ main(int argc, char *argv[])
char *args;
set_program_name(argv[0]);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN);
vlog_set_levels(&VLM_reconnect, VLF_ANY_FACILITY, VLL_WARN);
ovsrec_init();
diff --git a/vswitchd/ovs-vswitchd.c b/vswitchd/ovs-vswitchd.c
index da18a0a..ca76aef 100644
--- a/vswitchd/ovs-vswitchd.c
+++ b/vswitchd/ovs-vswitchd.c
@@ -32,6 +32,7 @@
#include "dirs.h"
#include "dpif.h"
#include "dummy.h"
+#include "fatal-signal.h"
#include "memory.h"
#include "netdev.h"
#include "openflow/openflow.h"
@@ -72,7 +73,7 @@ main(int argc, char *argv[])
set_program_name(argv[0]);
service_start(&argc, &argv);
remote = parse_options(argc, argv, &unixctl_path);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
ovsrec_init();
daemonize_start();
diff --git a/vtep/vtep-ctl.c b/vtep/vtep-ctl.c
index 233367b..fc7998b 100644
--- a/vtep/vtep-ctl.c
+++ b/vtep/vtep-ctl.c
@@ -31,6 +31,7 @@
#include "compiler.h"
#include "dirs.h"
#include "dynamic-string.h"
+#include "fatal-signal.h"
#include "hash.h"
#include "json.h"
#include "ovsdb-data.h"
@@ -167,7 +168,7 @@ main(int argc, char *argv[])
char *args;
set_program_name(argv[0]);
- signal(SIGPIPE, SIG_IGN);
+ fatal_ignore_sigpipe();
vlog_set_levels(NULL, VLF_CONSOLE, VLL_WARN);
vlog_set_levels(&VLM_reconnect, VLF_ANY_FACILITY, VLL_WARN);
vteprec_init();
--
1.7.9.5
More information about the dev
mailing list