//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1997 - 1999
//
//  File:       nsimgm.idl
//
//--------------------------------------------------------------------------

[
    uuid (d6d70ef0-0e3b-11cb-acc3-08002b1d29c4),
    version (1.0),
    pointer_default (unique)
]

interface NsiM
{

import"nsicom.idl";


/*
 * N S I _ G R O U P _ D E L E T E
 *
 * Remove a group attribute from a name service entry.
 */

void nsi_group_delete
    (
    [in]        UNSIGNED32                    group_name_syntax,
    [in]        STRING_T                      group_name,
    [out]       UNSIGNED16                  * status
    );


/*
 * N S I _ G R O U P _ M B R _ A D D
 *
 * Add a an entry name to a group, if necessary, create the group.
 */

void nsi_group_mbr_add
    (
    [in]        UNSIGNED32                    group_name_syntax,
    [in]        STRING_T                      group_name,
    [in]        UNSIGNED32                    member_name_syntax,
    [in]        STRING_T                      member_name,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ G R O U P _ M B R _ R E M O V E
 *
 * Delete a an entry name to a group.
 */

void nsi_group_mbr_remove
    (
    [in]        UNSIGNED32                    group_name_syntax,
    [in]        STRING_T                      group_name,
    [in]        UNSIGNED32                    member_name_syntax,
    [in]        STRING_T                      member_name,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ G R O U P _ M B R _ I N Q _ B E G I N
 *
 * Create an inquiry context for an group with a certain name syntax..
 */

void nsi_group_mbr_inq_begin
    (
#ifdef __CLIENT__         // workaround for midl bug.
	[in]        handle_t                      function_explicit_handle,
#endif
    [in]        UNSIGNED32                    group_name_syntax,
    [in]        STRING_T                      group_name,
    [in]        UNSIGNED32                    member_name_syntax,
    [out]       NSI_NS_HANDLE_T	*             inq_context,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ G R O U P _ M B R _ I N Q _ N E X T
 *
 * Return the next group member in name service group.
 */

void nsi_group_mbr_inq_next
    (
    [in]        NSI_NS_HANDLE_T	              inq_context,
    [out]       STRING_T                    * member_name,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ G R O U P _ M B R _ I N Q _ D O N E
 *
 * Delete a inquiry context for a group.
 */

void nsi_group_mbr_inq_done
    (
    [in,out]    NSI_NS_HANDLE_T	            * inq_context,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ P R O F I L E _ D E L E T E
 *
 * Remove a profile attribute from a name service entry.
 */

void nsi_profile_delete
    (
    [in]        UNSIGNED32                    profile_name_syntax,
    [in]        STRING_T                      profile_name,
    [out]       UNSIGNED16                  * status
    );


/*
 * N S I _ P R O F I L E _ E L T _ A D D
 *
 * Add a an entry name to a profile, if necessary, create the profile.
 */

void nsi_profile_elt_add
    (
    [in]        UNSIGNED32                    profile_name_syntax,
    [in]        STRING_T                      profile_name,
    [in]        NSI_IF_ID_P_T                 if_id,
    [in]        UNSIGNED32                    member_name_syntax,
    [in]        STRING_T                      member_name,
    [in]        UNSIGNED32                    priority,
    [in]        STRING_T                      annotation,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ P R O F I L E _ E L T _ R E M O V E
 *
 * Delete a an entry name to a profile.
 */

void nsi_profile_elt_remove
    (
    [in]        UNSIGNED32                    profile_name_syntax,
    [in]        STRING_T                      profile_name,
    [in]        NSI_IF_ID_P_T                 if_id,
    [in]        UNSIGNED32                    member_name_syntax,
    [in]        STRING_T                      member_name,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ P R O F I L E _ E L T _ I N Q _ B E G I N
 *
 * Create an inquiry context for an profile with a certain name syntax..
 */

void nsi_profile_elt_inq_begin
    (
#ifdef __CLIENT__         // workaround for midl bug.
	[in]        handle_t                      function_explicit_handle,
#endif
    [in]        UNSIGNED32                    profile_name_syntax,
    [in]        STRING_T                      profile_name,
    [in]        UNSIGNED32                    inquiry_type,
    [in]        NSI_IF_ID_P_T                 if_id,
    [in]        UNSIGNED32                    vers_option,
    [in]        UNSIGNED32                    member_name_syntax,
    [in]        STRING_T                      member_name,
    [out]       NSI_NS_HANDLE_T	            * inq_context,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ P R O F I L E _ E L T _ I N Q _ N E X T
 *
 * Return the next profile member in name service profile.
 */

void nsi_profile_elt_inq_next
    (
    [in]        NSI_NS_HANDLE_T	              inq_context,
    [in,out]    NSI_IF_ID_P_T                 if_id,
    [out]       STRING_T                    * member_name,
    [out]       UNSIGNED32                  * priority,
    [out]       STRING_T                    * annotation,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ P R O F I L E _ E L T _ I N Q _ D O N E
 *
 * Delete a inquiry context for a profile.
 */

void nsi_profile_elt_inq_done
    (
    [in,out]    NSI_NS_HANDLE_T	            * inq_context,
    [out]       UNSIGNED16                  * status
    );


/*
 * N S I _ E N T R Y _ O B J E C T _ B E G I N
 *
 * Create an inquiry context for an server entry's object UUIDs.
 */

void nsi_entry_object_inq_begin
    (
#ifdef __CLIENT__         // workaround for midl bug.
	[in]        handle_t                      function_explicit_handle,
#endif
    [in]        UNSIGNED32                    entry_name_syntax,
    [in]        STRING_T                      entry_name,
    [out]       NSI_NS_HANDLE_T	*             inq_context,
    [out]       UNSIGNED16                  * status
    );


/*
 * N S I _ E N T R Y _ O B J E C T _ I N Q _ N E X T
 *
 * Return the object UUID in a server entry.
 */

void nsi_entry_object_inq_next
    (
    [in]        NSI_NS_HANDLE_T	              inq_context,
    [in, out]   NSI_UUID_P_T                  uuid,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ E N T R Y _ O B J E C T _ I N Q _ D O N E
 *
 * Delete a inquiry context for a server entry's objects.
 */

void nsi_entry_object_inq_done
    (
    [in,out]    NSI_NS_HANDLE_T	            * inq_context,
    [out]       UNSIGNED16                  * status
    );


/*
 * N S I _ E N T R Y _ E X P A N D _ N A M E
 *
 * Expand a cell relative name into a global one.
 */

void nsi_entry_expand_name
    (
    [in]        UNSIGNED32                    entry_name_syntax,
    [in]        STRING_T                      entry_name,
    [out]       STRING_T                    * expanded_name,
    [out]       UNSIGNED16                  * status
    );



/*
 * N S I _ M G M T _ B I N D I N G _ U N E X P O R T
 *
 * Remove interfaces and/or objects from a given server entry.
 */

void nsi_mgmt_binding_unexport
    (
    [in]        UNSIGNED32                    entry_name_syntax,
    [in]        STRING_T                      entry_name,
    [in]        NSI_IF_ID_P_T                 if_id,
    [in]        UNSIGNED32                    vers_option,
    [in]        NSI_UUID_VECTOR_P_T           object_uuid_vec,
    [out]       UNSIGNED16                  * status
    );


/*
 * N S I _ M G M T _ E N T R Y _ D E L E T E
 *
 * Delete a server/group/profile name service entry.
 */

void nsi_mgmt_entry_delete
    (
    [in]        UNSIGNED32                    entry_name_syntax,
    [in]        STRING_T                      entry_name,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ M G M T _ E N T R Y _ C R E A T E
 *
 * Create a name service entry.
 */

void nsi_mgmt_entry_create
    (
    [in]        UNSIGNED32                    entry_name_syntax,
    [in]        STRING_T                      entry_name,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ M G M T _ E N T R Y _ I N Q _ I F D S
 *
 * Inquiry the interfaces at a given name service entry.
 */

void nsi_mgmt_entry_inq_if_ids
    (
    [in]        UNSIGNED32                    entry_name_syntax,
    [in]        STRING_T                      entry_name,
    [out]       NSI_IF_ID_VECTOR_T         ** if_id_vec,
    [out]       UNSIGNED16                  * status
    );

/*
 * N S I _ M G M T _ I N Q  _ E X P _ A G E
 *
 * Inquiry the global age of entries cached.
 */

void nsi_mgmt_inq_exp_age
    (
    [out]       UNSIGNED32                  * expiration_age,
    [out]       UNSIGNED16                  * status
    );


/*
 * N S I _ M G M T _ I N Q  _ S E T _ A G E
 *
 * Set the global age of entries cached.
 */

void nsi_mgmt_inq_set_age
    (
    [in]        UNSIGNED32                    expiration_age,
    [out]       UNSIGNED16                  * status
    );

}
