X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fstream-fd.c;h=f7e1234a00ceac3ef13edfb3b1bd95e06da1505f;hb=4cceacb94cfc1d75a961d3d746d2ae369c397ae5;hp=38dba7c71211923dfab685751154fa94c8cb8b77;hpb=7921b912de1e347f418a116f6d83f802dee655e2;p=openvswitch diff --git a/lib/stream-fd.c b/lib/stream-fd.c index 38dba7c7..f7e1234a 100644 --- a/lib/stream-fd.c +++ b/lib/stream-fd.c @@ -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. @@ -150,6 +150,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,6 +169,7 @@ 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; }; @@ -198,12 +200,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 +257,24 @@ pfd_wait(struct pstream *pstream) poll_fd_wait(ps->fd, POLLIN); } +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 struct pstream_class fd_pstream_class = { "pstream", + false, NULL, pfd_close, pfd_accept, - pfd_wait + pfd_wait, + pfd_set_dscp, }; /* Helper functions. */