-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 82448 b: refs/heads/master c: 1d8206b h: refs/heads/master v: v3
- Loading branch information
Tom Tucker
authored and
J. Bruce Fields
committed
Feb 1, 2008
1 parent
ce6a769
commit 6259846
Showing
5 changed files
with
118 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: cb5c7d668e1af269a9409721268f027b86abf29c | ||
refs/heads/master: 1d8206b97a09e7ff2fbef17d8d1ea008d764eeaa |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
/* | ||
* linux/include/linux/sunrpc/svc_xprt.h | ||
* | ||
* RPC server transport I/O | ||
*/ | ||
|
||
#ifndef SUNRPC_SVC_XPRT_H | ||
#define SUNRPC_SVC_XPRT_H | ||
|
||
#include <linux/sunrpc/svc.h> | ||
|
||
struct svc_xprt_ops { | ||
}; | ||
|
||
struct svc_xprt_class { | ||
const char *xcl_name; | ||
struct module *xcl_owner; | ||
struct svc_xprt_ops *xcl_ops; | ||
struct list_head xcl_list; | ||
}; | ||
|
||
struct svc_xprt { | ||
struct svc_xprt_class *xpt_class; | ||
struct svc_xprt_ops *xpt_ops; | ||
}; | ||
|
||
int svc_reg_xprt_class(struct svc_xprt_class *); | ||
void svc_unreg_xprt_class(struct svc_xprt_class *); | ||
void svc_xprt_init(struct svc_xprt_class *, struct svc_xprt *); | ||
|
||
#endif /* SUNRPC_SVC_XPRT_H */ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,83 @@ | ||
/* | ||
* linux/net/sunrpc/svc_xprt.c | ||
* | ||
* Author: Tom Tucker <tom@opengridcomputing.com> | ||
*/ | ||
|
||
#include <linux/sched.h> | ||
#include <linux/errno.h> | ||
#include <linux/fcntl.h> | ||
#include <linux/net.h> | ||
#include <linux/in.h> | ||
#include <linux/inet.h> | ||
#include <linux/udp.h> | ||
#include <linux/tcp.h> | ||
#include <linux/unistd.h> | ||
#include <linux/slab.h> | ||
#include <linux/netdevice.h> | ||
#include <linux/skbuff.h> | ||
#include <linux/file.h> | ||
#include <linux/freezer.h> | ||
#include <net/sock.h> | ||
#include <net/checksum.h> | ||
#include <net/ip.h> | ||
#include <net/ipv6.h> | ||
#include <net/tcp_states.h> | ||
#include <linux/uaccess.h> | ||
#include <asm/ioctls.h> | ||
|
||
#include <linux/sunrpc/types.h> | ||
#include <linux/sunrpc/clnt.h> | ||
#include <linux/sunrpc/xdr.h> | ||
#include <linux/sunrpc/svcsock.h> | ||
#include <linux/sunrpc/stats.h> | ||
#include <linux/sunrpc/svc_xprt.h> | ||
|
||
#define RPCDBG_FACILITY RPCDBG_SVCXPRT | ||
|
||
/* List of registered transport classes */ | ||
static DEFINE_SPINLOCK(svc_xprt_class_lock); | ||
static LIST_HEAD(svc_xprt_class_list); | ||
|
||
int svc_reg_xprt_class(struct svc_xprt_class *xcl) | ||
{ | ||
struct svc_xprt_class *cl; | ||
int res = -EEXIST; | ||
|
||
dprintk("svc: Adding svc transport class '%s'\n", xcl->xcl_name); | ||
|
||
INIT_LIST_HEAD(&xcl->xcl_list); | ||
spin_lock(&svc_xprt_class_lock); | ||
/* Make sure there isn't already a class with the same name */ | ||
list_for_each_entry(cl, &svc_xprt_class_list, xcl_list) { | ||
if (strcmp(xcl->xcl_name, cl->xcl_name) == 0) | ||
goto out; | ||
} | ||
list_add_tail(&xcl->xcl_list, &svc_xprt_class_list); | ||
res = 0; | ||
out: | ||
spin_unlock(&svc_xprt_class_lock); | ||
return res; | ||
} | ||
EXPORT_SYMBOL_GPL(svc_reg_xprt_class); | ||
|
||
void svc_unreg_xprt_class(struct svc_xprt_class *xcl) | ||
{ | ||
dprintk("svc: Removing svc transport class '%s'\n", xcl->xcl_name); | ||
spin_lock(&svc_xprt_class_lock); | ||
list_del_init(&xcl->xcl_list); | ||
spin_unlock(&svc_xprt_class_lock); | ||
} | ||
EXPORT_SYMBOL_GPL(svc_unreg_xprt_class); | ||
|
||
/* | ||
* Called by transport drivers to initialize the transport independent | ||
* portion of the transport instance. | ||
*/ | ||
void svc_xprt_init(struct svc_xprt_class *xcl, struct svc_xprt *xprt) | ||
{ | ||
memset(xprt, 0, sizeof(*xprt)); | ||
xprt->xpt_class = xcl; | ||
xprt->xpt_ops = xcl->xcl_ops; | ||
} | ||
EXPORT_SYMBOL_GPL(svc_xprt_init); |