Replace most uses of assert by ovs_assert.
[sliver-openvswitch.git] / lib / jsonrpc.c
index 0e1788c..50073b6 100644 (file)
@@ -18,7 +18,6 @@
 
 #include "jsonrpc.h"
 
-#include <assert.h>
 #include <errno.h>
 
 #include "byteq.h"
@@ -83,7 +82,7 @@ jsonrpc_open(struct stream *stream)
 {
     struct jsonrpc *rpc;
 
-    assert(stream != NULL);
+    ovs_assert(stream != NULL);
 
     rpc = xzalloc(sizeof *rpc);
     rpc->name = xstrdup(stream_get_name(stream));
@@ -473,7 +472,7 @@ jsonrpc_received(struct jsonrpc *rpc)
 static void
 jsonrpc_error(struct jsonrpc *rpc, int error)
 {
-    assert(error);
+    ovs_assert(error);
     if (!rpc->status) {
         rpc->status = error;
         jsonrpc_cleanup(rpc);
@@ -791,7 +790,7 @@ jsonrpc_session_open(const char *name)
  * On the assumption that such connections are likely to be short-lived
  * (e.g. from ovs-vsctl), informational logging for them is suppressed. */
 struct jsonrpc_session *
-jsonrpc_session_open_unreliably(struct jsonrpc *jsonrpc)
+jsonrpc_session_open_unreliably(struct jsonrpc *jsonrpc, uint8_t dscp)
 {
     struct jsonrpc_session *s;
 
@@ -801,7 +800,7 @@ jsonrpc_session_open_unreliably(struct jsonrpc *jsonrpc)
     reconnect_set_name(s->reconnect, jsonrpc_get_name(jsonrpc));
     reconnect_set_max_tries(s->reconnect, 0);
     reconnect_connected(s->reconnect, time_msec());
-    s->dscp = 0;
+    s->dscp = dscp;
     s->rpc = jsonrpc;
     s->stream = NULL;
     s->pstream = NULL;
@@ -1093,6 +1092,20 @@ jsonrpc_session_set_dscp(struct jsonrpc_session *s,
                          uint8_t dscp)
 {
     if (s->dscp != dscp) {
+        if (s->pstream) {
+            int error;
+
+            error = pstream_set_dscp(s->pstream, dscp);
+            if (error) {
+                VLOG_ERR("%s: failed set_dscp %s",
+                         reconnect_get_name(s->reconnect), strerror(error));
+            }
+            /*
+             * XXX race window between setting dscp to listening socket
+             * and accepting socket. accepted socket may have old dscp value.
+             * Ignore this race window for now.
+             */
+        }
         s->dscp = dscp;
         jsonrpc_session_force_reconnect(s);
     }