/*
Title	    Solaris Access Control List Definition
Description Includes classes for the cimom's ACLs
Date        05/09/00
Version     1.0 
Copyright (c) 2000 Sun Microsystems, Inc. All Rights Reserved.
*/

#pragma namespace("root/security")

Qualifier Abstract : boolean = false, 
		    Scope(class, association, indication), 
		    Flavor(DisableOverride, Restricted);

Qualifier Association : boolean = false,
			Scope(class, association), 
			Flavor(DisableOverride);

Qualifier Key : boolean = false, 
		Scope(property, reference), 
		Flavor(DisableOverride);

Qualifier Override : string = null, 
		    Scope(property, method, reference);

Qualifier Description : string = null, 
			Scope(any),
			Flavor(Translatable);

Qualifier Expensive : boolean = false, 
        	    Scope(property, reference, method, class, association);

Qualifier In : boolean = true, 
		Scope(parameter);

Qualifier Provider : string = null, 
		    Scope(any);

[Description("Base class for Access Control Lists (ACLs)"),
 Abstract
] 
class Solaris_Acl
{
    [Description("Indicates what capabilities are allowed by this ACL")]
    string capability = "r";
};


[Description("Namespace ACLs"),
 Abstract(false),
 Provider("internal")
]
class Solaris_NamespaceAcl : Solaris_Acl
{
    [Key,
     Description("Identifies the namespace that this ACL relates to.")
    ]
    string nspace;
};

[Description("User ACLs"),
 Provider("internal")
]
class Solaris_UserAcl : Solaris_Acl
{
    [Key,
     Description("Identifies the namespace that this ACL relates to.")
    ]
    string nspace;

    [Key,
     Description("Identifies the user that this ACL relates to.")
    ]
    string username;
};

/*
 * instance of Solaris_UserAcl
 * {
 *   nspace = "root\\foo";
 *   username = "tjohnson";
 *   capability = "rw";
 * };
 *
 * instance of Solaris_UserAcl
 * {
 *   nspace = "root\\bar";
 *   username = "tjohnson";
 *   capability = "w";
 * };
 */
