version(1.0),
pointer_default(unique),
helpstring("DCE/RPC Remote Management")
-]
+]
interface mgmt
{
+ /* MS-RPCE 2.2.1.1.7 Security Providers */
+ const uint32 MGMT_AUTHN_NONE = 0x00;
+ const uint32 MGMT_AUTHN_GSS_NEG = 0x09;
+ const uint32 MGMT_AUTHN_WINNT = 0x0A;
+ const uint32 MGMT_AUTHN_GSS_SCHANNEL = 0x0E;
+ const uint32 MGMT_AUTHN_GSS_KERBEROS = 0x10;
+ const uint32 MGMT_AUTHN_NETLOGON = 0x44;
+ const uint32 MGMT_AUTHN_DEFAULT = 0xFF;
+
typedef struct {
ndr_syntax_id *id;
} ndr_syntax_id_p;
WERROR _mgmt_inq_princ_name(struct pipes_struct *p,
struct mgmt_inq_princ_name *r)
{
- p->fault_state = DCERPC_FAULT_OP_RNG_ERROR;
- return WERR_NOT_SUPPORTED;
+ int ret;
+
+ if (r->in.authn_proto != MGMT_AUTHN_GSS_NEG) {
+ DEBUG(0, ("unsupported authn_proto %u\n",
+ (unsigned)r->in.authn_proto));
+ return WERR_INVALID_PARAM;
+ }
+
+ ret = snprintf(r->out.princ_name, r->in.princ_name_size, "%s$@%s",
+ lp_netbios_name(), lp_realm());
+ if ((ret < 0) || (ret >= r->in.princ_name_size)) {
+ return WERR_BUFFER_OVERFLOW;
+ }
+
+ DEBUG(6, ("returning principle name: %s\n",
+ r->out.princ_name));
+
+ return WERR_OK;
}