From 11c19c99dc2d2417822087ad8e1cf28a584411bd Mon Sep 17 00:00:00 2001 From: patiencew Date: Mon, 29 Oct 2007 16:55:21 +0000 Subject: [PATCH] git-svn-id: https://ceph.svn.sf.net/svnroot/ceph@1998 29311d96-e01e-0410-9327-a35deaab8ce9 --- trunk/ceph/kernel/ktcp.c | 41 ++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/trunk/ceph/kernel/ktcp.c b/trunk/ceph/kernel/ktcp.c index de49129d8bd78..e210769bb38f2 100644 --- a/trunk/ceph/kernel/ktcp.c +++ b/trunk/ceph/kernel/ktcp.c @@ -36,10 +36,10 @@ struct socket * _klisten(struct sockaddr *saddr) ret = sock_create_kern(AF_INET, SOCK_STREAM, IPPROTO_TCP, &sd); if (ret < 0) { printk(KERN_INFO "sock_create_kern error: %d\n", ret); - return(sd); + return(NULL); } - /* no user specified address given so create */ + /* no user specified address given so create, will allow arg to mount */ if (!in_addr->sin_addr.s_addr) { in_addr->sin_family = AF_INET; in_addr->sin_addr.s_addr = htonl(INADDR_ANY); @@ -53,8 +53,8 @@ struct socket * _klisten(struct sockaddr *saddr) printk("Failed to set SO_REUSEADDR: %d\n", ret); } */ ret = sd->ops->bind(sd, saddr, sizeof(saddr)); -/* TBD: probaby want to lessen the backlog queue to prevent chewing up resources.. */ - ret = sd->ops->listen(sd, SOMAXCONN); +/* TBD: probaby want to tune the backlog queue .. */ + ret = sd->ops->listen(sd, NUM_BACKUP); if (ret < 0) { printk(KERN_INFO "kernel_listen error: %d\n", ret); sock_release(sd); @@ -63,9 +63,24 @@ struct socket * _klisten(struct sockaddr *saddr) return(sd); } -void _kaccept(struct sockaddr *saddr, struct socket **sd) +/* + * Note: Maybe don't need this, or make inline... keep for now for debugging.. + * we may need to add more functionality + */ +struct socket *_kaccept(struct socket *sd) { - return; + struct socket *new_sd = NULL; + int ret; + + +/* TBD: somewhere check for a connection already established to this node? */ + ret = kernel_accept(sd, &new_sd, sd->file->f_flags); + if (ret < 0) { + printk(KERN_INFO "kernel_accept error: %d\n", ret); + return(new_sd); + } +/* TBD: shall we check name for validity? */ + return(new_sd); } /* @@ -107,3 +122,17 @@ int _ksendmsg(struct socket *sd, struct kvec *iov, } return(rlen); } + +struct sockaddr *_kgetname(struct socket *sd) +{ + struct sockaddr *saddr = NULL; + int len; + int ret; + + if ((ret = sd->ops->getname(sd, (struct sockaddr *)saddr, + &len, 2) < 0)) { + printk(KERN_INFO "kernel getname error: %d\n", ret); + } + return(saddr); + +} -- 2.39.5