関数 | |
NTSTATUS | ndr_push_GUID (struct ndr_push *ndr, int ndr_flags, const struct GUID *r) |
NTSTATUS | ndr_pull_GUID (struct ndr_pull *ndr, int ndr_flags, struct GUID *r) |
size_t | ndr_size_GUID (const struct GUID *r, int flags) |
NTSTATUS | GUID_from_string (const char *s, struct GUID *guid) |
build a GUID from a string | |
GUID | GUID_random (void) |
generate a random GUID | |
GUID | GUID_zero (void) |
generate an empty GUID | |
BOOL | all_zero (const uint8_t *ptr, size_t size) |
see if a range of memory is all zero. | |
BOOL | GUID_all_zero (const struct GUID *u) |
BOOL | GUID_equal (const struct GUID *u1, const struct GUID *u2) |
char * | GUID_string (TALLOC_CTX *mem_ctx, const struct GUID *guid) |
its useful to be able to display these in debugging messages | |
char * | GUID_string2 (TALLOC_CTX *mem_ctx, const struct GUID *guid) |
void | ndr_print_GUID (struct ndr_print *ndr, const char *name, const struct GUID *guid) |
BOOL | policy_handle_empty (struct policy_handle *h) |
NTSTATUS | ndr_push_policy_handle (struct ndr_push *ndr, int ndr_flags, const struct policy_handle *r) |
NTSTATUS | ndr_pull_policy_handle (struct ndr_pull *ndr, int ndr_flags, struct policy_handle *r) |
void | ndr_print_policy_handle (struct ndr_print *ndr, const char *name, const struct policy_handle *r) |
NTSTATUS | ndr_push_server_id (struct ndr_push *ndr, int ndr_flags, const struct server_id *r) |
NTSTATUS | ndr_pull_server_id (struct ndr_pull *ndr, int ndr_flags, struct server_id *r) |
void | ndr_print_server_id (struct ndr_print *ndr, const char *name, const struct server_id *r) |
ndr_misc.c の 28 行で定義されています。
参照先 GUID::clock_seq・ndr_push_align()・ndr_push_array_uint8()・ndr_push_uint16()・ndr_push_uint32()・GUID::node・GUID::time_hi_and_version・GUID::time_low・GUID::time_mid.
参照元 ndr_push_policy_handle()・ndr_push_security_ace_object_inherited_type()・ndr_push_security_ace_object_type()・ndr_size_GUID().
00029 { 00030 if (ndr_flags & NDR_SCALARS) { 00031 NDR_CHECK(ndr_push_align(ndr, 4)); 00032 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->time_low)); 00033 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->time_mid)); 00034 NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, r->time_hi_and_version)); 00035 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->clock_seq, 2)); 00036 NDR_CHECK(ndr_push_array_uint8(ndr, NDR_SCALARS, r->node, 6)); 00037 } 00038 if (ndr_flags & NDR_BUFFERS) { 00039 } 00040 return NT_STATUS_OK; 00041 }
ndr_misc.c の 43 行で定義されています。
参照先 GUID::clock_seq・ndr_pull_align()・ndr_pull_array_uint8()・ndr_pull_uint16()・ndr_pull_uint32()・GUID::node・GUID::time_hi_and_version・GUID::time_low・GUID::time_mid.
参照元 ndr_pull_policy_handle()・ndr_pull_security_ace_object_inherited_type()・ndr_pull_security_ace_object_type().
00044 { 00045 if (ndr_flags & NDR_SCALARS) { 00046 NDR_CHECK(ndr_pull_align(ndr, 4)); 00047 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->time_low)); 00048 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->time_mid)); 00049 NDR_CHECK(ndr_pull_uint16(ndr, NDR_SCALARS, &r->time_hi_and_version)); 00050 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->clock_seq, 2)); 00051 NDR_CHECK(ndr_pull_array_uint8(ndr, NDR_SCALARS, r->node, 6)); 00052 } 00053 if (ndr_flags & NDR_BUFFERS) { 00054 } 00055 return NT_STATUS_OK; 00056 }
size_t ndr_size_GUID | ( | const struct GUID * | r, | |
int | flags | |||
) |
ndr_misc.c の 58 行で定義されています。
参照先 ndr_push_GUID().
00059 { 00060 return ndr_size_struct(r, flags, (ndr_push_flags_fn_t)ndr_push_GUID); 00061 }
build a GUID from a string
ndr_misc.c の 66 行で定義されています。
参照先 GUID::clock_seq・GUID::node・status・GUID::time_hi_and_version・GUID::time_low・GUID::time_mid.
参照元 cmd_netlogon_dsr_getdcname()・cmd_netlogon_dsr_getdcnameex()・cmd_netlogon_dsr_getdcnameex2().
00067 { 00068 NTSTATUS status = NT_STATUS_INVALID_PARAMETER; 00069 uint32_t time_low; 00070 uint32_t time_mid, time_hi_and_version; 00071 uint32_t clock_seq[2]; 00072 uint32_t node[6]; 00073 int i; 00074 00075 if (s == NULL) { 00076 return NT_STATUS_INVALID_PARAMETER; 00077 } 00078 00079 if (11 == sscanf(s, "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", 00080 &time_low, &time_mid, &time_hi_and_version, 00081 &clock_seq[0], &clock_seq[1], 00082 &node[0], &node[1], &node[2], &node[3], &node[4], &node[5])) { 00083 status = NT_STATUS_OK; 00084 } else if (11 == sscanf(s, "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}", 00085 &time_low, &time_mid, &time_hi_and_version, 00086 &clock_seq[0], &clock_seq[1], 00087 &node[0], &node[1], &node[2], &node[3], &node[4], &node[5])) { 00088 status = NT_STATUS_OK; 00089 } 00090 00091 if (!NT_STATUS_IS_OK(status)) { 00092 return status; 00093 } 00094 00095 guid->time_low = time_low; 00096 guid->time_mid = time_mid; 00097 guid->time_hi_and_version = time_hi_and_version; 00098 guid->clock_seq[0] = clock_seq[0]; 00099 guid->clock_seq[1] = clock_seq[1]; 00100 for (i=0;i<6;i++) { 00101 guid->node[i] = node[i]; 00102 } 00103 00104 return NT_STATUS_OK; 00105 }
struct GUID GUID_random | ( | void | ) |
generate a random GUID
ndr_misc.c の 110 行で定義されています。
00111 { 00112 struct GUID guid; 00113 00114 generate_random_buffer((uint8_t *)&guid, sizeof(guid)); 00115 guid.clock_seq[0] = (guid.clock_seq[0] & 0x3F) | 0x80; 00116 guid.time_hi_and_version = (guid.time_hi_and_version & 0x0FFF) | 0x4000; 00117 00118 return guid; 00119 }
struct GUID GUID_zero | ( | void | ) |
generate an empty GUID
ndr_misc.c の 124 行で定義されています。
参照元 cmd_netlogon_dsr_getdcname()・cmd_netlogon_dsr_getdcnameex()・cmd_netlogon_dsr_getdcnameex2().
00125 { 00126 struct GUID guid; 00127 00128 ZERO_STRUCT(guid); 00129 00130 return guid; 00131 }
BOOL all_zero | ( | const uint8_t * | ptr, | |
size_t | size | |||
) |
see if a range of memory is all zero.
A NULL pointer is considered to be all zero
ndr_misc.c の 137 行で定義されています。
参照元 GUID_all_zero().
00138 { 00139 int i; 00140 if (!ptr) return True; 00141 for (i=0;i<size;i++) { 00142 if (ptr[i]) return False; 00143 } 00144 return True; 00145 }
ndr_misc.c の 148 行で定義されています。
参照先 all_zero()・GUID::clock_seq・GUID::node・GUID::time_hi_and_version・GUID::time_low・GUID::time_mid.
00149 { 00150 if (u->time_low != 0 || 00151 u->time_mid != 0 || 00152 u->time_hi_and_version != 0 || 00153 u->clock_seq[0] != 0 || 00154 u->clock_seq[1] != 0 || 00155 !all_zero(u->node, 6)) { 00156 return False; 00157 } 00158 return True; 00159 }
ndr_misc.c の 161 行で定義されています。
参照先 GUID::clock_seq・GUID::node・GUID::time_hi_and_version・GUID::time_low・GUID::time_mid.
00162 { 00163 if (u1->time_low != u2->time_low || 00164 u1->time_mid != u2->time_mid || 00165 u1->time_hi_and_version != u2->time_hi_and_version || 00166 u1->clock_seq[0] != u2->clock_seq[0] || 00167 u1->clock_seq[1] != u2->clock_seq[1] || 00168 memcmp(u1->node, u2->node, 6) != 0) { 00169 return False; 00170 } 00171 return True; 00172 }
char* GUID_string | ( | TALLOC_CTX * | mem_ctx, | |
const struct GUID * | guid | |||
) |
its useful to be able to display these in debugging messages
ndr_misc.c の 177 行で定義されています。
参照先 GUID::clock_seq・GUID::node・talloc_asprintf()・GUID::time_hi_and_version・GUID::time_low・GUID::time_mid.
参照元 display_ds_domain_controller_info()・GUID_string2()・ndr_print_GUID().
00178 { 00179 return talloc_asprintf(mem_ctx, 00180 "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x", 00181 guid->time_low, guid->time_mid, 00182 guid->time_hi_and_version, 00183 guid->clock_seq[0], 00184 guid->clock_seq[1], 00185 guid->node[0], guid->node[1], 00186 guid->node[2], guid->node[3], 00187 guid->node[4], guid->node[5]); 00188 }
char* GUID_string2 | ( | TALLOC_CTX * | mem_ctx, | |
const struct GUID * | guid | |||
) |
ndr_misc.c の 190 行で定義されています。
参照先 GUID_string()・talloc_asprintf()・talloc_free().
00191 { 00192 char *ret, *s = GUID_string(mem_ctx, guid); 00193 ret = talloc_asprintf(mem_ctx, "{%s}", s); 00194 talloc_free(s); 00195 return ret; 00196 }
ndr_misc.c の 198 行で定義されています。
参照先 GUID_string()・ndr_print::print.
参照元 ndr_print_policy_handle()・ndr_print_security_ace_object_inherited_type()・ndr_print_security_ace_object_type().
00199 { 00200 ndr->print(ndr, "%-25s: %s", name, GUID_string(ndr, guid)); 00201 }
BOOL policy_handle_empty | ( | struct policy_handle * | h | ) |
ndr_misc.c の 203 行で定義されています。
参照先 GUID_all_zero()・policy_handle::handle_type・policy_handle::uuid.
00204 { 00205 return (h->handle_type == 0 && GUID_all_zero(&h->uuid)); 00206 }
NTSTATUS ndr_push_policy_handle | ( | struct ndr_push * | ndr, | |
int | ndr_flags, | |||
const struct policy_handle * | r | |||
) |
ndr_misc.c の 208 行で定義されています。
参照先 policy_handle::handle_type・ndr_push_align()・ndr_push_GUID()・ndr_push_uint32()・policy_handle::uuid.
00209 { 00210 if (ndr_flags & NDR_SCALARS) { 00211 NDR_CHECK(ndr_push_align(ndr, 4)); 00212 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->handle_type)); 00213 NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->uuid)); 00214 } 00215 if (ndr_flags & NDR_BUFFERS) { 00216 } 00217 return NT_STATUS_OK; 00218 }
NTSTATUS ndr_pull_policy_handle | ( | struct ndr_pull * | ndr, | |
int | ndr_flags, | |||
struct policy_handle * | r | |||
) |
ndr_misc.c の 220 行で定義されています。
参照先 policy_handle::handle_type・ndr_pull_align()・ndr_pull_GUID()・ndr_pull_uint32()・policy_handle::uuid.
00221 { 00222 if (ndr_flags & NDR_SCALARS) { 00223 NDR_CHECK(ndr_pull_align(ndr, 4)); 00224 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->handle_type)); 00225 NDR_CHECK(ndr_pull_GUID(ndr, NDR_SCALARS, &r->uuid)); 00226 } 00227 if (ndr_flags & NDR_BUFFERS) { 00228 } 00229 return NT_STATUS_OK; 00230 }
void ndr_print_policy_handle | ( | struct ndr_print * | ndr, | |
const char * | name, | |||
const struct policy_handle * | r | |||
) |
ndr_misc.c の 232 行で定義されています。
参照先 ndr_print::depth・policy_handle::handle_type・ndr_print_GUID()・ndr_print_struct()・ndr_print_uint32()・policy_handle::uuid.
00233 { 00234 ndr_print_struct(ndr, name, "policy_handle"); 00235 ndr->depth++; 00236 ndr_print_uint32(ndr, "handle_type", r->handle_type); 00237 ndr_print_GUID(ndr, "uuid", &r->uuid); 00238 ndr->depth--; 00239 }
ndr_misc.c の 241 行で定義されています。
参照先 server_id::id・ndr_push_align()・ndr_push_uint32()・process_id::pid.
00242 { 00243 if (ndr_flags & NDR_SCALARS) { 00244 NDR_CHECK(ndr_push_align(ndr, 4)); 00245 NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 00246 (uint32_t)r->id.pid)); 00247 } 00248 if (ndr_flags & NDR_BUFFERS) { 00249 } 00250 return NT_STATUS_OK; 00251 }
ndr_misc.c の 253 行で定義されています。
参照先 server_id::id・ndr_pull_align()・ndr_pull_uint32()・process_id::pid.
00254 { 00255 if (ndr_flags & NDR_SCALARS) { 00256 uint32_t pid; 00257 NDR_CHECK(ndr_pull_align(ndr, 4)); 00258 NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &pid)); 00259 r->id.pid = (pid_t)pid; 00260 } 00261 if (ndr_flags & NDR_BUFFERS) { 00262 } 00263 return NT_STATUS_OK; 00264 }
ndr_misc.c の 266 行で定義されています。
参照先 ndr_print::depth・server_id::id・ndr_print_struct()・ndr_print_uint32()・process_id::pid.
00267 { 00268 ndr_print_struct(ndr, name, "server_id"); 00269 ndr->depth++; 00270 ndr_print_uint32(ndr, "id", (uint32_t)r->id.pid); 00271 ndr->depth--; 00272 }