Catalli's threaded switch
[sliver-openvswitch.git] / lib / stream.h
index d21de2f..5c536c6 100644 (file)
@@ -20,6 +20,7 @@
 #include <stdbool.h>
 #include <stddef.h>
 #include <stdint.h>
+#include "vlog.h"
 
 struct pstream;
 struct stream;
@@ -29,7 +30,7 @@ void stream_usage(const char *name, bool active, bool passive, bool bootstrap);
 /* Bidirectional byte streams. */
 int stream_verify_name(const char *name);
 int stream_open(const char *name, struct stream **);
-int stream_open_block(const char *name, struct stream **);
+int stream_open_block(int error, struct stream **);
 void stream_close(struct stream *);
 const char *stream_get_name(const struct stream *);
 uint32_t stream_get_remote_ip(const struct stream *);
@@ -61,5 +62,28 @@ void pstream_close(struct pstream *);
 int pstream_accept(struct pstream *, struct stream **);
 int pstream_accept_block(struct pstream *, struct stream **);
 void pstream_wait(struct pstream *);
+\f
+/* Convenience functions. */
+
+int stream_open_with_default_ports(const char *name,
+                                   uint16_t default_tcp_port,
+                                   uint16_t default_ssl_port,
+                                   struct stream **);
+int pstream_open_with_default_ports(const char *name,
+                                    uint16_t default_ptcp_port,
+                                    uint16_t default_pssl_port,
+                                    struct pstream **);
+\f
+/* Error reporting. */
+
+enum stream_content_type {
+    STREAM_UNKNOWN,
+    STREAM_OPENFLOW,
+    STREAM_SSL,
+    STREAM_JSONRPC
+};
+
+void stream_report_content(const void *, size_t, enum stream_content_type,
+                           struct vlog_module *, const char *stream_name);
 
 #endif /* stream.h */