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

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



Call inet_listen to implement the listen command.

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

diff --git a/drivers/xen/pvcalls-back.c b/drivers/xen/pvcalls-back.c
index ff4634d..a762877 100644
--- a/drivers/xen/pvcalls-back.c
+++ b/drivers/xen/pvcalls-back.c
@@ -345,7 +345,28 @@ static int pvcalls_back_bind(struct xenbus_device *dev,
 static int pvcalls_back_listen(struct xenbus_device *dev,
                               struct xen_pvcalls_request *req)
 {
-       return 0;
+       struct pvcalls_back_priv *priv;
+       int ret = -EINVAL;
+       struct sockpass_mapping *map;
+       struct xen_pvcalls_response *rsp;
+
+       if (dev == NULL)
+               return 0;
+       priv = dev_get_drvdata(&dev->dev);
+
+       map = radix_tree_lookup(&priv->socketpass_mappings, req->u.listen.id);
+       if (map == NULL)
+               goto out;
+
+       ret = inet_listen(map->sock, req->u.listen.backlog);
+
+out:
+       rsp = RING_GET_RESPONSE(&priv->ring, priv->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 1;
 }
 
 static int pvcalls_back_accept(struct xenbus_device *dev,
-- 
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®.