Whamcloud - gitweb
LU-13041 lnet: fix router primary_nid deletion
[fs/lustre-release.git] / lustre / ptlrpc / gss / gss_api.h
index 11b1c37..a5f203e 100644 (file)
@@ -1,9 +1,7 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
- *
+/*
  * Modifications for Lustre
  *
- * Copyright  2008 Sun Microsystems, Inc. All rights reserved
+ * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
  *
  * Author: Eric Mei <ericm@clusterfs.com>
  */
 
 struct gss_api_mech;
 
+typedef int (*digest_hash)(
+       struct ahash_request *req, rawobj_t *hdr,
+       int msgcnt, rawobj_t *msgs,
+       int iovcnt, lnet_kiov_t *iovs);
+
 /* The mechanism-independent gss-api context: */
 struct gss_ctx {
-        struct gss_api_mech    *mech_type;
-        void                   *internal_ctx_id;
+       struct gss_api_mech *mech_type;
+       void *internal_ctx_id;
+       digest_hash hash_func;
 };
 
 #define GSS_C_NO_BUFFER         ((rawobj_t) 0)
@@ -46,16 +50,20 @@ __u32 lgss_copy_reverse_context(
                 struct gss_ctx         **ctx_new);
 __u32 lgss_inquire_context(
                 struct gss_ctx          *ctx,
-                unsigned long           *endtime);
+               time64_t *endtime);
 __u32 lgss_get_mic(
                 struct gss_ctx          *ctx,
                 int                      msgcnt,
                 rawobj_t                *msgs,
+                int                      iovcnt,
+                lnet_kiov_t             *iovs,
                 rawobj_t                *mic_token);
 __u32 lgss_verify_mic(
                 struct gss_ctx          *ctx,
                 int                      msgcnt,
                 rawobj_t                *msgs,
+                int                      iovcnt,
+                lnet_kiov_t             *iovs,
                 rawobj_t                *mic_token);
 __u32 lgss_wrap(
                 struct gss_ctx          *ctx,
@@ -68,12 +76,19 @@ __u32 lgss_unwrap(
                 rawobj_t                *gsshdr,
                 rawobj_t                *token,
                 rawobj_t                *out_msg);
-__u32 lgss_plain_encrypt(
-                struct gss_ctx          *ctx,
-                int                      decrypt,
-                int                      length,
-                void                    *in_buf,
-                void                    *out_buf);
+__u32 lgss_prep_bulk(
+                struct gss_ctx          *gctx,
+                struct ptlrpc_bulk_desc *desc);
+__u32 lgss_wrap_bulk(
+                struct gss_ctx          *gctx,
+                struct ptlrpc_bulk_desc *desc,
+                rawobj_t                *token,
+                int                      adj_nob);
+__u32 lgss_unwrap_bulk(
+                struct gss_ctx          *gctx,
+                struct ptlrpc_bulk_desc *desc,
+                rawobj_t                *token,
+                int                      adj_nob);
 __u32 lgss_delete_sec_context(
                 struct gss_ctx         **ctx);
 int lgss_display(
@@ -90,14 +105,14 @@ struct subflavor_desc {
 
 /* Each mechanism is described by the following struct: */
 struct gss_api_mech {
-        struct list_head        gm_list;
-        struct module          *gm_owner;
-        char                   *gm_name;
-        rawobj_t                gm_oid;
-        atomic_t                gm_count;
-        struct gss_api_ops     *gm_ops;
-        int                     gm_sf_num;
-        struct subflavor_desc  *gm_sfs;
+       struct list_head        gm_list;
+       struct module          *gm_owner;
+       char                   *gm_name;
+       rawobj_t                gm_oid;
+       atomic_t                gm_count;
+       struct gss_api_ops     *gm_ops;
+       int                     gm_sf_num;
+       struct subflavor_desc  *gm_sfs;
 };
 
 /* and must provide the following operations: */
@@ -110,16 +125,20 @@ struct gss_api_ops {
                         struct gss_ctx         *ctx_new);
         __u32 (*gss_inquire_context)(
                         struct gss_ctx         *ctx,
-                        unsigned long          *endtime);
+                       time64_t *endtime);
         __u32 (*gss_get_mic)(
                         struct gss_ctx         *ctx,
                         int                     msgcnt,
                         rawobj_t               *msgs,
+                        int                     iovcnt,
+                        lnet_kiov_t            *iovs,
                         rawobj_t               *mic_token);
         __u32 (*gss_verify_mic)(
                         struct gss_ctx         *ctx,
                         int                     msgcnt,
                         rawobj_t               *msgs,
+                        int                     iovcnt,
+                        lnet_kiov_t            *iovs,
                         rawobj_t               *mic_token);
         __u32 (*gss_wrap)(
                         struct gss_ctx         *ctx,
@@ -132,12 +151,19 @@ struct gss_api_ops {
                         rawobj_t               *gsshdr,
                         rawobj_t               *token,
                         rawobj_t               *out_msg);
-        __u32 (*gss_plain_encrypt)(
-                        struct gss_ctx         *ctx,
-                        int                     decrypt,
-                        int                     length,
-                        void                   *in_buf,
-                        void                   *out_buf);
+        __u32 (*gss_prep_bulk)(
+                        struct gss_ctx         *gctx,
+                        struct ptlrpc_bulk_desc *desc);
+        __u32 (*gss_wrap_bulk)(
+                        struct gss_ctx         *gctx,
+                        struct ptlrpc_bulk_desc *desc,
+                        rawobj_t               *token,
+                        int                     adj_nob);
+        __u32 (*gss_unwrap_bulk)(
+                        struct gss_ctx         *gctx,
+                        struct ptlrpc_bulk_desc *desc,
+                        rawobj_t               *token,
+                        int                     adj_nob);
         void (*gss_delete_sec_context)(
                         void                   *ctx);
         int  (*gss_display)(