diff options
| author | Chuck Lever <chuck.lever@oracle.com> | 2013-03-16 15:54:34 -0400 |
|---|---|---|
| committer | Trond Myklebust <Trond.Myklebust@netapp.com> | 2013-03-29 15:42:56 -0400 |
| commit | fb15b26f8ba3ff629a052faf3f4a4744585ca2dc (patch) | |
| tree | 2218a2e577bf075170497549847d49840f296aae /include/linux/sunrpc | |
| parent | 72f4dc117b57e05120aaac6e218b8abc09a5c350 (diff) | |
SUNRPC: Define rpcsec_gss_info structure
The NFSv4 SECINFO procedure returns a list of security flavors. Any
GSS flavor also has a GSS tuple containing an OID, a quality-of-
protection value, and a service value, which specifies a particular
GSS pseudoflavor.
For simplicity and efficiency, I'd like to return each GSS tuple
from the NFSv4 SECINFO XDR decoder and pass it straight into the RPC
client.
Define a data structure that is visible to both the NFS client and
the RPC client. Take structure and field names from the relevant
standards to avoid confusion.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'include/linux/sunrpc')
| -rw-r--r-- | include/linux/sunrpc/gss_api.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/include/linux/sunrpc/gss_api.h b/include/linux/sunrpc/gss_api.h index a19e2547ae6a..98950e5a8877 100644 --- a/include/linux/sunrpc/gss_api.h +++ b/include/linux/sunrpc/gss_api.h | |||
| @@ -25,10 +25,20 @@ struct gss_ctx { | |||
| 25 | 25 | ||
| 26 | #define GSS_C_NO_BUFFER ((struct xdr_netobj) 0) | 26 | #define GSS_C_NO_BUFFER ((struct xdr_netobj) 0) |
| 27 | #define GSS_C_NO_CONTEXT ((struct gss_ctx *) 0) | 27 | #define GSS_C_NO_CONTEXT ((struct gss_ctx *) 0) |
| 28 | #define GSS_C_NULL_OID ((struct xdr_netobj) 0) | ||
| 29 | 28 | ||
| 30 | /*XXX arbitrary length - is this set somewhere? */ | 29 | /*XXX arbitrary length - is this set somewhere? */ |
| 31 | #define GSS_OID_MAX_LEN 32 | 30 | #define GSS_OID_MAX_LEN 32 |
| 31 | struct rpcsec_gss_oid { | ||
| 32 | unsigned int len; | ||
| 33 | u8 data[GSS_OID_MAX_LEN]; | ||
| 34 | }; | ||
| 35 | |||
| 36 | /* From RFC 3530 */ | ||
| 37 | struct rpcsec_gss_info { | ||
| 38 | struct rpcsec_gss_oid oid; | ||
| 39 | u32 qop; | ||
| 40 | u32 service; | ||
| 41 | }; | ||
| 32 | 42 | ||
| 33 | /* gss-api prototypes; note that these are somewhat simplified versions of | 43 | /* gss-api prototypes; note that these are somewhat simplified versions of |
| 34 | * the prototypes specified in RFC 2744. */ | 44 | * the prototypes specified in RFC 2744. */ |
| @@ -76,7 +86,7 @@ struct pf_desc { | |||
| 76 | struct gss_api_mech { | 86 | struct gss_api_mech { |
| 77 | struct list_head gm_list; | 87 | struct list_head gm_list; |
| 78 | struct module *gm_owner; | 88 | struct module *gm_owner; |
| 79 | struct xdr_netobj gm_oid; | 89 | struct rpcsec_gss_oid gm_oid; |
| 80 | char *gm_name; | 90 | char *gm_name; |
| 81 | const struct gss_api_ops *gm_ops; | 91 | const struct gss_api_ops *gm_ops; |
| 82 | /* pseudoflavors supported by this mechanism: */ | 92 | /* pseudoflavors supported by this mechanism: */ |
