leak-checker: Remove because it cannot be made thread-safe.
[sliver-openvswitch.git] / lib / stream-fd.c
index 38dba7c..df5e8b0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2008, 2009, 2010, 2012 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010, 2012 Nicira, Inc.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,6 @@
 
 #include <config.h>
 #include "stream-fd.h"
-#include <assert.h>
 #include <errno.h>
 #include <poll.h>
 #include <stdlib.h>
@@ -25,7 +24,6 @@
 #include <sys/types.h>
 #include <unistd.h>
 #include "fatal-signal.h"
-#include "leak-checker.h"
 #include "poll-loop.h"
 #include "socket-util.h"
 #include "stress.h"
@@ -150,6 +148,7 @@ fd_wait(struct stream *stream, enum stream_wait_type wait)
 
 static const struct stream_class stream_fd_class = {
     "fd",                       /* name */
+    false,                      /* needs_probes */
     NULL,                       /* open */
     fd_close,                   /* close */
     fd_connect,                 /* connect */
@@ -168,10 +167,11 @@ struct fd_pstream
     int fd;
     int (*accept_cb)(int fd, const struct sockaddr *, size_t sa_len,
                      struct stream **);
+    int (*set_dscp_cb)(int fd, uint8_t dscp);
     char *unlink_path;
 };
 
-static struct pstream_class fd_pstream_class;
+static const struct pstream_class fd_pstream_class;
 
 static struct fd_pstream *
 fd_pstream_cast(struct pstream *pstream)
@@ -198,12 +198,14 @@ int
 new_fd_pstream(const char *name, int fd,
                int (*accept_cb)(int fd, const struct sockaddr *sa,
                                 size_t sa_len, struct stream **streamp),
+               int (*set_dscp_cb)(int fd, uint8_t dscp),
                char *unlink_path, struct pstream **pstreamp)
 {
     struct fd_pstream *ps = xmalloc(sizeof *ps);
     pstream_init(&ps->pstream, &fd_pstream_class, name);
     ps->fd = fd;
     ps->accept_cb = accept_cb;
+    ps->set_dscp_cb = set_dscp_cb;
     ps->unlink_path = unlink_path;
     *pstreamp = &ps->pstream;
     return 0;
@@ -253,12 +255,24 @@ pfd_wait(struct pstream *pstream)
     poll_fd_wait(ps->fd, POLLIN);
 }
 
-static struct pstream_class fd_pstream_class = {
+static int
+pfd_set_dscp(struct pstream *pstream, uint8_t dscp)
+{
+    struct fd_pstream *ps = fd_pstream_cast(pstream);
+    if (ps->set_dscp_cb) {
+        return ps->set_dscp_cb(ps->fd, dscp);
+    }
+    return 0;
+}
+
+static const struct pstream_class fd_pstream_class = {
     "pstream",
+    false,
     NULL,
     pfd_close,
     pfd_accept,
-    pfd_wait
+    pfd_wait,
+    pfd_set_dscp,
 };
 \f
 /* Helper functions. */