Whamcloud - gitweb
LU-3289 gss: Add Shared key and GSS Null functionality
[fs/lustre-release.git] / lustre / ptlrpc / sec_config.c
index 573e263..e9f429a 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2014, Intel Corporation.
+ * Copyright (c) 2011, 2015, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
@@ -88,7 +88,6 @@ enum lustre_sec_part sptlrpc_target_sec_part(struct obd_device *obd)
         CERROR("unknown target %p(%s)\n", obd, type);
         return LUSTRE_SP_ANY;
 }
-EXPORT_SYMBOL(sptlrpc_target_sec_part);
 
 /****************************************
  * user supplied flavor string parsing  *
@@ -286,7 +285,6 @@ int sptlrpc_rule_set_expand(struct sptlrpc_rule_set *rset)
         rset->srs_nslot = nslot;
         return 0;
 }
-EXPORT_SYMBOL(sptlrpc_rule_set_expand);
 
 static inline int rule_spec_dir(struct sptlrpc_rule *rule)
 {
@@ -434,7 +432,6 @@ int sptlrpc_rule_set_choose(struct sptlrpc_rule_set *rset,
 
         return 0;
 }
-EXPORT_SYMBOL(sptlrpc_rule_set_choose);
 
 void sptlrpc_rule_set_dump(struct sptlrpc_rule_set *rset)
 {
@@ -447,7 +444,6 @@ void sptlrpc_rule_set_dump(struct sptlrpc_rule_set *rset)
                        r->sr_from, r->sr_to, r->sr_netid, r->sr_flvr.sf_rpc);
         }
 }
-EXPORT_SYMBOL(sptlrpc_rule_set_dump);
 
 static int sptlrpc_rule_set_extract(struct sptlrpc_rule_set *gen,
                                     struct sptlrpc_rule_set *tgt,
@@ -842,6 +838,14 @@ static void inline flavor_set_flags(struct sptlrpc_flavor *sf,
                 if (fl_udesc && sf->sf_rpc != SPTLRPC_FLVR_NULL)
                         sf->sf_flags |= PTLRPC_SEC_FL_UDESC;
         }
+
+       /* Some flavors use a single uid (0) context */
+       if (flvr_is_rootonly(sf->sf_rpc))
+               sf->sf_flags |= PTLRPC_SEC_FL_ROOTONLY;
+
+       /* User descriptor might need to be cleared */
+       if (flvr_allows_user_desc(sf->sf_rpc) == 0)
+               sf->sf_flags &= ~PTLRPC_SEC_FL_UDESC;
 }
 
 void sptlrpc_conf_choose_flavor(enum lustre_sec_part from,
@@ -899,7 +903,6 @@ void sptlrpc_target_choose_flavor(struct sptlrpc_rule_set *rset,
         if (sptlrpc_rule_set_choose(rset, from, LUSTRE_SP_ANY, nid, sf) == 0)
                 get_default_flavor(sf);
 }
-EXPORT_SYMBOL(sptlrpc_target_choose_flavor);
 
 #define SEC_ADAPT_DELAY         (10)
 
@@ -912,9 +915,11 @@ void sptlrpc_conf_client_adapt(struct obd_device *obd)
         struct obd_import  *imp;
         ENTRY;
 
-        LASSERT(strcmp(obd->obd_type->typ_name, LUSTRE_MDC_NAME) == 0 ||
-                strcmp(obd->obd_type->typ_name, LUSTRE_OSC_NAME) ==0);
-        CDEBUG(D_SEC, "obd %s\n", obd->u.cli.cl_target_uuid.uuid);
+       LASSERT(strcmp(obd->obd_type->typ_name, LUSTRE_MDC_NAME) == 0 ||
+               strcmp(obd->obd_type->typ_name, LUSTRE_OSC_NAME) == 0 ||
+               strcmp(obd->obd_type->typ_name, LUSTRE_OSP_NAME) == 0 ||
+               strcmp(obd->obd_type->typ_name, LUSTRE_LWP_NAME) == 0);
+       CDEBUG(D_SEC, "obd %s\n", obd->u.cli.cl_target_uuid.uuid);
 
         /* serialize with connect/disconnect import */
        down_read(&obd->u.cli.cl_sem);
@@ -936,14 +941,12 @@ EXPORT_SYMBOL(sptlrpc_conf_client_adapt);
 
 static void rule2string(struct sptlrpc_rule *r, char *buf, int buflen)
 {
-        char    dirbuf[8];
-        char   *net;
-        char   *ptr = buf;
+       char     dirbuf[8];
+       char     net[LNET_NIDSTR_SIZE] = "default";
+       char    *ptr = buf;
 
-        if (r->sr_netid == LNET_NIDNET(LNET_NID_ANY))
-                net = "default";
-        else
-                net = libcfs_net2str(r->sr_netid);
+       if (r->sr_netid != LNET_NIDNET(LNET_NID_ANY))
+               libcfs_net2str_r(r->sr_netid, net, sizeof(net));
 
         if (r->sr_from == LUSTRE_SP_ANY && r->sr_to == LUSTRE_SP_ANY)
                 dirbuf[0] = '\0';
@@ -1211,7 +1214,6 @@ out:
        mutex_unlock(&sptlrpc_conf_lock);
         RETURN(rc);
 }
-EXPORT_SYMBOL(sptlrpc_conf_target_get_rules);
 
 int  sptlrpc_conf_init(void)
 {