it's known here as _samr_unknown_2d().
uint32 _samr_set_groupinfo(const POLICY_HND *pol,
uint16 switch_level,
const GROUP_INFO_CTR* ctr);
+uint32 _samr_unknown_2d(const POLICY_HND *domain_pol, const DOM_SID *sid);
/*The following definitions come from samrd/srv_samr_dom_tdb.c */
uint32 _samr_query_dom_info(const POLICY_HND *domain_pol,
uint16 switch_value,
SAM_UNK_CTR *ctr);
+uint32 _samr_unknown_2d(const POLICY_HND *domain_pol, const DOM_SID *sid);
/*The following definitions come from samrd/srv_samr_grp_tdb.c */
/*The following definitions come from samrd/srv_samr_passdb.c */
uint32 _samr_close(POLICY_HND *hnd);
+uint32 _samr_unknown_2d(const POLICY_HND *domain_pol, const DOM_SID *sid);
uint32 _samr_open_domain(const POLICY_HND *connect_pol,
uint32 ace_perms,
const DOM_SID *sid,
{
return False;
}
-
-
r_u.status = _samr_close(&q_u.pol);
-
memcpy(&r_u.pol, &q_u.pol, sizeof(q_u.pol));
return samr_io_r_close_hnd("", &r_u, rdata, 0);
}
+/*******************************************************************
+ api_samr_unknown_2d
+ ********************************************************************/
+static BOOL api_samr_unknown_2d( rpcsrv_struct *p, prs_struct *data, prs_struct *rdata)
+{
+ SAMR_Q_UNKNOWN_2D q_u;
+ SAMR_R_UNKNOWN_2D r_u;
+ if (!samr_io_q_unknown_2d("", &q_u, data, 0))
+ {
+ return False;
+ }
+ r_u.status = _samr_unknown_2d(&q_u.dom_pol, &q_u.sid.sid);
+ return samr_io_r_unknown_2d("", &r_u, rdata, 0);
+}
+
/*******************************************************************
api_samr_open_domain
********************************************************************/
{ "SAMR_OPEN_ALIAS" , SAMR_OPEN_ALIAS , api_samr_open_alias },
{ "SAMR_OPEN_GROUP" , SAMR_OPEN_GROUP , api_samr_open_group },
{ "SAMR_OPEN_DOMAIN" , SAMR_OPEN_DOMAIN , api_samr_open_domain },
+ { "SAMR_UNKNOWN_2D" , SAMR_UNKNOWN_2D , api_samr_unknown_2d },
{ "SAMR_LOOKUP_DOMAIN" , SAMR_LOOKUP_DOMAIN , api_samr_lookup_domain },
{ "SAMR_QUERY_SEC_OBJECT" , SAMR_QUERY_SEC_OBJECT , api_samr_query_sec_obj },
{ "SAMR_GET_USRDOM_PWINFO", SAMR_GET_USRDOM_PWINFO, api_samr_get_usrdom_pwinfo},
{
return NT_STATUS_ACCESS_DENIED;
}
+
+/*******************************************************************
+ samr_reply_unknown_2d
+ ********************************************************************/
+uint32 _samr_unknown_2d(const POLICY_HND *domain_pol, const DOM_SID *sid)
+{
+ DEBUG(0,("_samr_unknown_2d: not implemented, returning OK\n"));
+
+ return NT_STATUS_NOPROBLEMO;
+}
return NT_STATUS_NOPROBLEMO;
}
+
+/*******************************************************************
+ samr_reply_unknown_2d
+ ********************************************************************/
+uint32 _samr_unknown_2d(const POLICY_HND *domain_pol, const DOM_SID *sid)
+{
+ DEBUG(0,("_samr_unknown_2d: not implemented, returning OK\n"));
+ return NT_STATUS_NOPROBLEMO;
+}
return NT_STATUS_OBJECT_NAME_INVALID;
}
+/*******************************************************************
+ samr_reply_unknown_2d
+ ********************************************************************/
+uint32 _samr_unknown_2d(const POLICY_HND *domain_pol, const DOM_SID *sid)
+{
+ DOM_SID dom_sid;
+
+ /* associate the domain SID with the (unique) handle. */
+ if (!get_policy_samr_sid(get_global_hnd_cache(), domain_pol, &dom_sid))
+ {
+ return NT_STATUS_ACCESS_DENIED;
+ }
+
+ DEBUG(0,("_samr_unknown_2d: not implemented, returning OK\n"));
+ DEBUG(5,("_samr_unknown_2d: %d\n", __LINE__));
+
+ return NT_STATUS_NOPROBLEMO;
+}
+
/*******************************************************************
samr_reply_open_domain
********************************************************************/