X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fvconn-stream.c;h=d8c8b471205099e2395bd7fa9f1376954fa2536d;hb=320437cd400e00973a65daa480612d43e6c26d79;hp=f58cc2c0c5e3b1198b4bdf15740b1f99af6ee004;hpb=9fe9a47916b38646a30bbceb60c7a2b7caba1112;p=sliver-openvswitch.git diff --git a/lib/vconn-stream.c b/lib/vconn-stream.c index f58cc2c0c..d8c8b4712 100644 --- a/lib/vconn-stream.c +++ b/lib/vconn-stream.c @@ -40,13 +40,13 @@ #include #include #include -#include "buffer.h" -#include "util.h" -#include "openflow.h" +#include "ofpbuf.h" +#include "openflow/openflow.h" #include "poll-loop.h" #include "socket-util.h" -#include "vconn.h" +#include "util.h" #include "vconn-provider.h" +#include "vconn.h" #include "vlog.h" #define THIS_MODULE VLM_vconn_stream @@ -57,8 +57,8 @@ struct stream_vconn { struct vconn vconn; int fd; - struct buffer *rxbuf; - struct buffer *txbuf; + struct ofpbuf *rxbuf; + struct ofpbuf *txbuf; struct poll_waiter *tx_waiter; }; @@ -106,15 +106,15 @@ stream_connect(struct vconn *vconn) } static int -stream_recv(struct vconn *vconn, struct buffer **bufferp) +stream_recv(struct vconn *vconn, struct ofpbuf **bufferp) { struct stream_vconn *s = stream_vconn_cast(vconn); - struct buffer *rx; + struct ofpbuf *rx; size_t want_bytes; ssize_t retval; if (s->rxbuf == NULL) { - s->rxbuf = buffer_new(1564); + s->rxbuf = ofpbuf_new(1564); } rx = s->rxbuf; @@ -136,9 +136,9 @@ again: return 0; } } - buffer_prealloc_tailroom(rx, want_bytes); + ofpbuf_prealloc_tailroom(rx, want_bytes); - retval = read(s->fd, buffer_tail(rx), want_bytes); + retval = read(s->fd, ofpbuf_tail(rx), want_bytes); if (retval > 0) { rx->size += retval; if (retval == want_bytes) { @@ -166,7 +166,7 @@ again: static void stream_clear_txbuf(struct stream_vconn *s) { - buffer_delete(s->txbuf); + ofpbuf_delete(s->txbuf); s->txbuf = NULL; s->tx_waiter = NULL; } @@ -184,7 +184,7 @@ stream_do_tx(int fd UNUSED, short int revents UNUSED, void *vconn_) return; } } else if (n > 0) { - buffer_pull(s->txbuf, n); + ofpbuf_pull(s->txbuf, n); if (!s->txbuf->size) { stream_clear_txbuf(s); return; @@ -194,7 +194,7 @@ stream_do_tx(int fd UNUSED, short int revents UNUSED, void *vconn_) } static int -stream_send(struct vconn *vconn, struct buffer *buffer) +stream_send(struct vconn *vconn, struct ofpbuf *buffer) { struct stream_vconn *s = stream_vconn_cast(vconn); ssize_t retval; @@ -205,12 +205,12 @@ stream_send(struct vconn *vconn, struct buffer *buffer) retval = write(s->fd, buffer->data, buffer->size); if (retval == buffer->size) { - buffer_delete(buffer); + ofpbuf_delete(buffer); return 0; } else if (retval >= 0 || errno == EAGAIN) { s->txbuf = buffer; if (retval > 0) { - buffer_pull(buffer, retval); + ofpbuf_pull(buffer, retval); } s->tx_waiter = poll_fd_callback(s->fd, POLLOUT, stream_do_tx, vconn); return 0; @@ -246,40 +246,41 @@ stream_wait(struct vconn *vconn, enum vconn_wait_type wait) } static struct vconn_class stream_vconn_class = { - .name = "stream", - .close = stream_close, - .connect = stream_connect, - .recv = stream_recv, - .send = stream_send, - .wait = stream_wait, + "stream", /* name */ + NULL, /* open */ + stream_close, /* close */ + stream_connect, /* connect */ + stream_recv, /* recv */ + stream_send, /* send */ + stream_wait, /* wait */ }; /* Passive stream socket vconn. */ -struct pstream_vconn +struct pstream_pvconn { - struct vconn vconn; + struct pvconn pvconn; int fd; int (*accept_cb)(int fd, const struct sockaddr *, size_t sa_len, struct vconn **); }; -static struct vconn_class pstream_vconn_class; +static struct pvconn_class pstream_pvconn_class; -static struct pstream_vconn * -pstream_vconn_cast(struct vconn *vconn) +static struct pstream_pvconn * +pstream_pvconn_cast(struct pvconn *pvconn) { - vconn_assert_class(vconn, &pstream_vconn_class); - return CONTAINER_OF(vconn, struct pstream_vconn, vconn); + pvconn_assert_class(pvconn, &pstream_pvconn_class); + return CONTAINER_OF(pvconn, struct pstream_pvconn, pvconn); } int -new_pstream_vconn(const char *name, int fd, +new_pstream_pvconn(const char *name, int fd, int (*accept_cb)(int fd, const struct sockaddr *, size_t sa_len, struct vconn **), - struct vconn **vconnp) + struct pvconn **pvconnp) { - struct pstream_vconn *ps; + struct pstream_pvconn *ps; int retval; retval = set_nonblocking(fd); @@ -296,25 +297,25 @@ new_pstream_vconn(const char *name, int fd, } ps = xmalloc(sizeof *ps); - vconn_init(&ps->vconn, &pstream_vconn_class, 0, 0, name); + pvconn_init(&ps->pvconn, &pstream_pvconn_class, name); ps->fd = fd; ps->accept_cb = accept_cb; - *vconnp = &ps->vconn; + *pvconnp = &ps->pvconn; return 0; } static void -pstream_close(struct vconn *vconn) +pstream_close(struct pvconn *pvconn) { - struct pstream_vconn *ps = pstream_vconn_cast(vconn); + struct pstream_pvconn *ps = pstream_pvconn_cast(pvconn); close(ps->fd); free(ps); } static int -pstream_accept(struct vconn *vconn, struct vconn **new_vconnp) +pstream_accept(struct pvconn *pvconn, struct vconn **new_vconnp) { - struct pstream_vconn *ps = pstream_vconn_cast(vconn); + struct pstream_pvconn *ps = pstream_pvconn_cast(pvconn); struct sockaddr_storage ss; socklen_t ss_len = sizeof ss; int new_fd; @@ -340,16 +341,16 @@ pstream_accept(struct vconn *vconn, struct vconn **new_vconnp) } static void -pstream_wait(struct vconn *vconn, enum vconn_wait_type wait) +pstream_wait(struct pvconn *pvconn) { - struct pstream_vconn *ps = pstream_vconn_cast(vconn); - assert(wait == WAIT_ACCEPT); + struct pstream_pvconn *ps = pstream_pvconn_cast(pvconn); poll_fd_wait(ps->fd, POLLIN); } -static struct vconn_class pstream_vconn_class = { - .name = "pstream", - .close = pstream_close, - .accept = pstream_accept, - .wait = pstream_wait +static struct pvconn_class pstream_pvconn_class = { + "pstream", + NULL, + pstream_close, + pstream_accept, + pstream_wait };