[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-devel] [PATCH v6 10/18] xen/pvcalls: implement listen command



Call inet_listen to implement the listen command.

Signed-off-by: Stefano Stabellini <stefano@xxxxxxxxxxx>
Reviewed-by: Boris Ostrovsky <boris.ostrovsky@xxxxxxxxxx>
CC: boris.ostrovsky@xxxxxxxxxx
CC: jgross@xxxxxxxx
---
 drivers/xen/pvcalls-back.c | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c
index dae91fb..689b84f 100644
--- a/drivers/xen/pvcalls-back.c
+++ b/drivers/xen/pvcalls-back.c
@@ -359,6 +359,27 @@ static int pvcalls_back_bind(struct xenbus_device *dev,
 static int pvcalls_back_listen(struct xenbus_device *dev,
                               struct xen_pvcalls_request *req)
 {
+       struct pvcalls_fedata *fedata;
+       int ret = -EINVAL;
+       struct sockpass_mapping *map;
+       struct xen_pvcalls_response *rsp;
+
+       fedata = dev_get_drvdata(&dev->dev);
+
+       down(&fedata->socket_lock);
+       map = radix_tree_lookup(&fedata->socketpass_mappings, req->u.listen.id);
+       up(&fedata->socket_lock);
+       if (map == NULL)
+               goto out;
+
+       ret = inet_listen(map->sock, req->u.listen.backlog);
+
+out:
+       rsp = RING_GET_RESPONSE(&fedata->ring, fedata->ring.rsp_prod_pvt++);
+       rsp->req_id = req->req_id;
+       rsp->cmd = req->cmd;
+       rsp->u.listen.id = req->u.listen.id;
+       rsp->ret = ret;
        return 0;
 }
 
-- 
1.9.1


_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
https://lists.xen.org/xen-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.