# $OpenLDAP$
+# $Id: ldapns.schema,v 1.3 2009-10-01 19:17:20 tedcheng Exp $
 # LDAP Name Service Additional Schema
 # http://www.iana.org/assignments/gssapi-service-names
 
           EQUALITY caseIgnoreMatch
           SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{256} )
 
+attributetype ( 1.3.6.1.4.1.5322.17.2.2 NAME 'loginStatus'
+          DESC 'Currently logged in sessions for a user'
+          EQUALITY caseIgnoreMatch
+          SUBSTR caseIgnoreSubstringsMatch
+          ORDERING caseIgnoreOrderingMatch
+          SYNTAX OMsDirectoryString )
+
 objectclass ( 1.3.6.1.4.1.5322.17.1.1 NAME 'authorizedServiceObject'
           DESC 'Auxiliary object class for adding authorizedService attribute'
           SUP top
           SUP top
           AUXILIARY
           MAY host )
+
+objectclass ( 1.3.6.1.4.1.5322.17.1.3 NAME 'loginStatusObject'
+          DESC 'Auxiliary object class for login status attribute'
+          SUP top
+          AUXILIARY
+          MAY loginStatus )
 
 static int ppolicy_cid;
 static AttributeDescription *ad_loginStatus;
 
-const char *at_loginStatus =
-       "( 1.3.6.1.4.1.4745.1.20.1 "
-       "NAME ( 'loginStatus' ) "
-       "DESC 'Currently logged in sessions for a user' "
-       "EQUALITY caseIgnoreMatch "
-       "SUBSTR caseIgnoreSubstringsMatch "
-       "ORDERING caseIgnoreOrderingMatch "
-       "SYNTAX OMsDirectoryString "
-       "USAGE directoryOperation )";
-
 struct paminfo {
        struct berval uid;
        struct berval dn;
 int nssov_pam_init()
 {
        int code = 0;
+       const char *text;
        if (!ad_loginStatus)
-               code = register_at( at_loginStatus, &ad_loginStatus, 0 );
+               code = slap_str2ad("loginStatus", &ad_loginStatus, &text);
+
        return code;
 }