예제 #1
0
파일: ndr_basic.c 프로젝트: gojdic/samba
_PUBLIC_ void ndr_print_array_uint8(struct ndr_print *ndr, const char *name, 
			   const uint8_t *data, uint32_t count)
{
	int i;

	if (count <= 600 && (ndr->flags & LIBNDR_PRINT_ARRAY_HEX)) {
		char s[1202];
		for (i=0;i<count;i++) {
			snprintf(&s[i*2], 3, "%02x", data[i]);
		}
		s[i*2] = 0;
		ndr->print(ndr, "%-25s: %s", name, s);
		return;
	}

	ndr->print(ndr, "%s: ARRAY(%d)", name, count);
	ndr->depth++;
	for (i=0;i<count;i++) {
		char *idx=NULL;
		if (asprintf(&idx, "[%d]", i) != -1) {
			ndr_print_uint8(ndr, idx, data[i]);
			free(idx);
		}
	}
	ndr->depth--;	
}
예제 #2
0
_PUBLIC_ void ndr_print_echo_info1(struct ndr_print *ndr, const char *name, const struct echo_info1 *r)
{
	ndr_print_struct(ndr, name, "echo_info1");
	ndr->depth++;
	ndr_print_uint8(ndr, "v", r->v);
	ndr->depth--;
}
예제 #3
0
_PUBLIC_ void ndr_print_echo_info7(struct ndr_print *ndr, const char *name, const struct echo_info7 *r)
{
	ndr_print_struct(ndr, name, "echo_info7");
	ndr->depth++;
	ndr_print_uint8(ndr, "v1", r->v1);
	ndr_print_STRUCT_echo_info4(ndr, "info4", &r->info4);
	ndr->depth--;
}
예제 #4
0
_PUBLIC_ void ndr_print_echo_info6(struct ndr_print *ndr, const char *name, const struct echo_info6 *r)
{
	ndr_print_struct(ndr, name, "echo_info6");
	ndr->depth++;
	ndr_print_uint8(ndr, "v1", r->v1);
	ndr_print_echo_info1(ndr, "info1", &r->info1);
	ndr->depth--;
}
예제 #5
0
_PUBLIC_ void ndr_print_echo_info5(struct ndr_print *ndr, const char *name, const struct echo_info5 *r)
{
	ndr_print_struct(ndr, name, "echo_info5");
	ndr->depth++;
	ndr_print_uint8(ndr, "v1", r->v1);
	ndr_print_hyper(ndr, "v2", r->v2);
	ndr->depth--;
}
예제 #6
0
_PUBLIC_ void ndr_print_libnet_JoinCtx(struct ndr_print *ndr, const char *name, int flags, const struct libnet_JoinCtx *r)
{
	ndr_print_struct(ndr, name, "libnet_JoinCtx");
	ndr->depth++;
	if (flags & NDR_SET_VALUES) {
		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
	}
	if (flags & NDR_IN) {
		ndr_print_struct(ndr, "in", "libnet_JoinCtx");
		ndr->depth++;
		ndr_print_string(ndr, "dc_name", r->in.dc_name);
		ndr_print_string(ndr, "machine_name", r->in.machine_name);
		ndr_print_ptr(ndr, "domain_name", r->in.domain_name);
		ndr->depth++;
		ndr_print_string(ndr, "domain_name", r->in.domain_name);
		ndr->depth--;
		ndr_print_string(ndr, "account_ou", r->in.account_ou);
		ndr_print_string(ndr, "admin_account", r->in.admin_account);
#ifdef DEBUG_PASSWORD
		ndr_print_string(ndr, "admin_password", r->in.admin_password);
		ndr_print_string(ndr, "machine_password", r->in.machine_password);
#else
		ndr_print_ptr(ndr, "admin_password", r->in.admin_password);
		ndr_print_ptr(ndr, "machine_password", r->in.machine_password);
#endif
		ndr_print_wkssvc_joinflags(ndr, "join_flags", r->in.join_flags);
		ndr_print_string(ndr, "os_version", r->in.os_version);
		ndr_print_string(ndr, "os_name", r->in.os_name);
		ndr_print_uint8(ndr, "create_upn", r->in.create_upn);
		ndr_print_string(ndr, "upn", r->in.upn);
		ndr_print_uint8(ndr, "modify_config", r->in.modify_config);
		ndr_print_ptr(ndr, "ads", r->in.ads);
		ndr->depth++;
		ndr_print_ads_struct(ndr, "ads", r->in.ads);
		ndr->depth--;
		ndr_print_uint8(ndr, "debug", r->in.debug);
		ndr_print_uint8(ndr, "use_kerberos", r->in.use_kerberos);
		ndr_print_netr_SchannelType(ndr, "secure_channel_type", r->in.secure_channel_type);
		ndr->depth--;
	}
	if (flags & NDR_OUT) {
		ndr_print_struct(ndr, "out", "libnet_JoinCtx");
		ndr->depth++;
		ndr_print_string(ndr, "account_name", r->out.account_name);
		ndr_print_string(ndr, "netbios_domain_name", r->out.netbios_domain_name);
		ndr_print_string(ndr, "dns_domain_name", r->out.dns_domain_name);
		ndr_print_string(ndr, "forest_name", r->out.forest_name);
		ndr_print_string(ndr, "dn", r->out.dn);
		ndr_print_ptr(ndr, "domain_sid", r->out.domain_sid);
		ndr->depth++;
		ndr_print_dom_sid(ndr, "domain_sid", r->out.domain_sid);
		ndr->depth--;
		ndr_print_uint8(ndr, "modified_config", r->out.modified_config);
		ndr_print_string(ndr, "error_string", r->out.error_string);
		ndr_print_uint8(ndr, "domain_is_ad", r->out.domain_is_ad);
		ndr_print_WERROR(ndr, "result", r->out.result);
		ndr->depth--;
	}
	ndr->depth--;
}
예제 #7
0
_PUBLIC_ void ndr_print_security_ace_flags(struct ndr_print *ndr, const char *name, uint8_t r)
{
	ndr_print_uint8(ndr, name, r);
	ndr->depth++;
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_OBJECT_INHERIT", SEC_ACE_FLAG_OBJECT_INHERIT, r);
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_CONTAINER_INHERIT", SEC_ACE_FLAG_CONTAINER_INHERIT, r);
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_NO_PROPAGATE_INHERIT", SEC_ACE_FLAG_NO_PROPAGATE_INHERIT, r);
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_INHERIT_ONLY", SEC_ACE_FLAG_INHERIT_ONLY, r);
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_INHERITED_ACE", SEC_ACE_FLAG_INHERITED_ACE, r);
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_VALID_INHERIT", SEC_ACE_FLAG_VALID_INHERIT, r);
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_SUCCESSFUL_ACCESS", SEC_ACE_FLAG_SUCCESSFUL_ACCESS, r);
	ndr_print_bitmap_flag(ndr, sizeof(uint8_t), "SEC_ACE_FLAG_FAILED_ACCESS", SEC_ACE_FLAG_FAILED_ACCESS, r);
	ndr->depth--;
}
예제 #8
0
_PUBLIC_ void ndr_print_initshutdown_InitEx(struct ndr_print *ndr, const char *name, int flags, const struct initshutdown_InitEx *r)
{
	ndr_print_struct(ndr, name, "initshutdown_InitEx");
	if (r == NULL) { ndr_print_null(ndr); return; }
	ndr->depth++;
	if (flags & NDR_SET_VALUES) {
		ndr->flags |= LIBNDR_PRINT_SET_VALUES;
	}
	if (flags & NDR_IN) {
		ndr_print_struct(ndr, "in", "initshutdown_InitEx");
		ndr->depth++;
		ndr_print_ptr(ndr, "hostname", r->in.hostname);
		ndr->depth++;
		if (r->in.hostname) {
			ndr_print_uint16(ndr, "hostname", *r->in.hostname);
		}
		ndr->depth--;
		ndr_print_ptr(ndr, "message", r->in.message);
		ndr->depth++;
		if (r->in.message) {
			ndr_print_lsa_StringLarge(ndr, "message", r->in.message);
		}
		ndr->depth--;
		ndr_print_uint32(ndr, "timeout", r->in.timeout);
		ndr_print_uint8(ndr, "force_apps", r->in.force_apps);
		ndr_print_uint8(ndr, "do_reboot", r->in.do_reboot);
		ndr_print_uint32(ndr, "reason", r->in.reason);
		ndr->depth--;
	}
	if (flags & NDR_OUT) {
		ndr_print_struct(ndr, "out", "initshutdown_InitEx");
		ndr->depth++;
		ndr_print_WERROR(ndr, "result", r->out.result);
		ndr->depth--;
	}
	ndr->depth--;
}
예제 #9
0
_PUBLIC_ void ndr_print_dnsp_DnssrvRpcRecord(struct ndr_print *ndr, const char *name, const struct dnsp_DnssrvRpcRecord *r)
{
	ndr_print_struct(ndr, name, "dnsp_DnssrvRpcRecord");
	if (r == NULL) { ndr_print_null(ndr); return; }
	ndr->depth++;
	ndr_print_uint16(ndr, "wDataLength", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?ndr_size_dnsRecordData(&r->data, r->wType, ndr->flags):r->wDataLength);
	ndr_print_dns_record_type(ndr, "wType", r->wType);
	ndr_print_uint8(ndr, "version", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?5:r->version);
	ndr_print_dns_record_rank(ndr, "rank", r->rank);
	ndr_print_uint16(ndr, "flags", r->flags);
	ndr_print_uint32(ndr, "dwSerial", r->dwSerial);
	ndr_print_uint32(ndr, "dwTtlSeconds", r->dwTtlSeconds);
	ndr_print_uint32(ndr, "dwReserved", r->dwReserved);
	ndr_print_uint32(ndr, "dwTimeStamp", r->dwTimeStamp);
	ndr_print_set_switch_value(ndr, &r->data, r->wType);
	ndr_print_dnsRecordData(ndr, "data", &r->data);
	ndr->depth--;
}
예제 #10
0
_PUBLIC_ void ndr_print_PERF_INSTANCE_DEFINITION(struct ndr_print *ndr, const char *name, const struct PERF_INSTANCE_DEFINITION *r)
{
	ndr_print_struct(ndr, name, "PERF_INSTANCE_DEFINITION");
	if (r == NULL) { ndr_print_null(ndr); return; }
	ndr->depth++;
	ndr_print_uint32(ndr, "ByteLength", r->ByteLength);
	ndr_print_uint32(ndr, "ParentObjectTitleIndex", r->ParentObjectTitleIndex);
	ndr_print_uint32(ndr, "ParentObjectTitlePointer", r->ParentObjectTitlePointer);
	ndr_print_uint32(ndr, "UniqueID", r->UniqueID);
	ndr_print_uint32(ndr, "NameOffset", r->NameOffset);
	ndr_print_uint32(ndr, "NameLength", r->NameLength);
	ndr_print_ptr(ndr, "data", r->data);
	ndr->depth++;
	if (r->data) {
		ndr_print_uint8(ndr, "data", *r->data);
	}
	ndr->depth--;
	ndr_print_PERF_COUNTER_BLOCK(ndr, "counter_data", &r->counter_data);
	ndr->depth--;
}
예제 #11
0
_PUBLIC_ void ndr_print_PERF_DATA_BLOCK(struct ndr_print *ndr, const char *name, const struct PERF_DATA_BLOCK *r)
{
	uint32_t cntr_Signature_0;
	uint32_t cntr_objects_0;
	ndr_print_struct(ndr, name, "PERF_DATA_BLOCK");
	if (r == NULL) { ndr_print_null(ndr); return; }
	ndr->depth++;
	ndr->print(ndr, "%s: ARRAY(%d)", "Signature", (int)4);
	ndr->depth++;
	for (cntr_Signature_0=0;cntr_Signature_0<4;cntr_Signature_0++) {
		ndr_print_uint16(ndr, "Signature", r->Signature[cntr_Signature_0]);
	}
	ndr->depth--;
	ndr_print_uint32(ndr, "LittleEndian", r->LittleEndian);
	ndr_print_uint32(ndr, "Version", r->Version);
	ndr_print_uint32(ndr, "Revision", r->Revision);
	ndr_print_uint32(ndr, "TotalByteLength", r->TotalByteLength);
	ndr_print_uint32(ndr, "HeaderLength", r->HeaderLength);
	ndr_print_uint32(ndr, "NumObjectTypes", r->NumObjectTypes);
	ndr_print_uint32(ndr, "DefaultObject", r->DefaultObject);
	ndr_print_SYSTEMTIME(ndr, "SystemTime", &r->SystemTime);
	ndr_print_uint32(ndr, "Padding", r->Padding);
	ndr_print_hyper(ndr, "PerfTime", r->PerfTime);
	ndr_print_hyper(ndr, "PerfFreq", r->PerfFreq);
	ndr_print_hyper(ndr, "PerfTime100nSec", r->PerfTime100nSec);
	ndr_print_uint32(ndr, "SystemNameLength", r->SystemNameLength);
	ndr_print_uint32(ndr, "SystemNameOffset", r->SystemNameOffset);
	ndr_print_ptr(ndr, "data", r->data);
	ndr->depth++;
	if (r->data) {
		ndr_print_uint8(ndr, "data", *r->data);
	}
	ndr->depth--;
	ndr->print(ndr, "%s: ARRAY(%d)", "objects", (int)r->NumObjectTypes);
	ndr->depth++;
	for (cntr_objects_0=0;cntr_objects_0<r->NumObjectTypes;cntr_objects_0++) {
		ndr_print_PERF_OBJECT_TYPE(ndr, "objects", &r->objects[cntr_objects_0]);
	}
	ndr->depth--;
	ndr->depth--;
}
예제 #12
0
_PUBLIC_ void ndr_print_array_uint8(struct ndr_print *ndr, const char *name,
			   const uint8_t *data, uint32_t count)
{
	int i;
#define _ONELINE_LIMIT 32

	if (data == NULL) {
		ndr->print(ndr, "%s: ARRAY(%d) : NULL", name, count);
		return;
	}

	if (count <= _ONELINE_LIMIT && (ndr->flags & LIBNDR_PRINT_ARRAY_HEX)) {
		char s[(_ONELINE_LIMIT + 1) * 2];
		for (i=0;i<count;i++) {
			snprintf(&s[i*2], 3, "%02x", data[i]);
		}
		s[i*2] = 0;
		ndr->print(ndr, "%-25s: %s", name, s);
		return;
	}

	ndr->print(ndr, "%s: ARRAY(%d)", name, count);
	if (count > _ONELINE_LIMIT && (ndr->flags & LIBNDR_PRINT_ARRAY_HEX)) {
		ndr_dump_data(ndr, data, count);
		return;
	}

	ndr->depth++;
	for (i=0;i<count;i++) {
		char *idx=NULL;
		if (asprintf(&idx, "[%d]", i) != -1) {
			ndr_print_uint8(ndr, idx, data[i]);
			free(idx);
		}
	}
	ndr->depth--;
#undef _ONELINE_LIMIT
}