static enum ndr_err_code ndr_push_xattr_DosInfo(struct ndr_push *ndr, int ndr_flags, const union xattr_DosInfo *r) { if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level)); switch (level) { case 1: { NDR_CHECK(ndr_push_xattr_DosInfo1(ndr, NDR_SCALARS, &r->info1)); break; } case 2: { NDR_CHECK(ndr_push_xattr_DosInfo2Old(ndr, NDR_SCALARS, &r->oldinfo2)); break; } default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case 1: break; case 2: break; default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } return NDR_ERR_SUCCESS; }
static enum ndr_err_code ndr_push_security_ace_object_type(struct ndr_push *ndr, int ndr_flags, const union security_ace_object_type *r) { if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_union_align(ndr, 4)); switch (level) { case SEC_ACE_OBJECT_TYPE_PRESENT: { NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->type)); break; } default: { break; } } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case SEC_ACE_OBJECT_TYPE_PRESENT: break; default: break; } } return NDR_ERR_SUCCESS; }
static enum ndr_err_code ndr_push_echo_Enum3(struct ndr_push *ndr, int ndr_flags, const union echo_Enum3 *r) { if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level)); switch (level) { case ECHO_ENUM1: { NDR_CHECK(ndr_push_echo_Enum1(ndr, NDR_SCALARS, r->e1)); break; } case ECHO_ENUM2: { NDR_CHECK(ndr_push_echo_Enum2(ndr, NDR_SCALARS, &r->e2)); break; } default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case ECHO_ENUM1: break; case ECHO_ENUM2: break; default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } return NDR_ERR_SUCCESS; }
_PUBLIC_ enum ndr_err_code ndr_push_PAC_INFO(struct ndr_push *ndr, int ndr_flags, const union PAC_INFO *r) { if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case PAC_TYPE_LOGON_INFO: { NDR_CHECK(ndr_push_PAC_LOGON_INFO_CTR(ndr, NDR_SCALARS, &r->logon_info)); break; } case PAC_TYPE_SRV_CHECKSUM: { NDR_CHECK(ndr_push_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->srv_cksum)); break; } case PAC_TYPE_KDC_CHECKSUM: { NDR_CHECK(ndr_push_PAC_SIGNATURE_DATA(ndr, NDR_SCALARS, &r->kdc_cksum)); break; } case PAC_TYPE_LOGON_NAME: { NDR_CHECK(ndr_push_PAC_LOGON_NAME(ndr, NDR_SCALARS, &r->logon_name)); break; } default: { { struct ndr_push *_ndr_unknown; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_unknown, 0, -1)); NDR_CHECK(ndr_push_DATA_BLOB_REM(_ndr_unknown, NDR_SCALARS, &r->unknown)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_unknown, 0, -1)); } break; } } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case PAC_TYPE_LOGON_INFO: NDR_CHECK(ndr_push_PAC_LOGON_INFO_CTR(ndr, NDR_BUFFERS, &r->logon_info)); break; case PAC_TYPE_SRV_CHECKSUM: break; case PAC_TYPE_KDC_CHECKSUM: break; case PAC_TYPE_LOGON_NAME: break; default: break; } } return NDR_ERR_SUCCESS; }
_PUBLIC_ enum ndr_err_code ndr_push_security_ace_object_ctr(struct ndr_push *ndr, int ndr_flags, const union security_ace_object_ctr *r) { if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_union_align(ndr, 4)); switch (level) { case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT: { NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; } case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: { NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; } case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT: { NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; } case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT: { NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; } default: { break; } } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; default: break; } } return NDR_ERR_SUCCESS; }
static NTSTATUS ndr_push_security_ace_object_inherited_type(struct ndr_push *ndr, int ndr_flags, const union security_ace_object_inherited_type *r) { int level; level = ndr_push_get_switch_value(ndr, r); if (ndr_flags & NDR_SCALARS) { switch (level) { case SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT: NDR_CHECK(ndr_push_GUID(ndr, NDR_SCALARS, &r->inherited_type)); break; default: break; } } if (ndr_flags & NDR_BUFFERS) { switch (level) { case SEC_ACE_INHERITED_OBJECT_TYPE_PRESENT: break; default: break; } } return NT_STATUS_OK; }
static enum ndr_err_code ndr_push_dssetup_DsRoleInfo(struct ndr_push *ndr, int ndr_flags, const union dssetup_DsRoleInfo *r) { if (ndr_flags & NDR_SCALARS) { uint32_t level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_union_align(ndr, 5)); NDR_CHECK(ndr_push_dssetup_DsRoleInfoLevel(ndr, NDR_SCALARS, level)); NDR_CHECK(ndr_push_union_align(ndr, 5)); switch (level) { case DS_ROLE_BASIC_INFORMATION: { NDR_CHECK(ndr_push_dssetup_DsRolePrimaryDomInfoBasic(ndr, NDR_SCALARS, &r->basic)); break; } case DS_ROLE_UPGRADE_STATUS: { NDR_CHECK(ndr_push_dssetup_DsRoleUpgradeStatus(ndr, NDR_SCALARS, &r->upgrade)); break; } case DS_ROLE_OP_STATUS: { NDR_CHECK(ndr_push_dssetup_DsRoleOpStatus(ndr, NDR_SCALARS, &r->opstatus)); break; } default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); } } if (ndr_flags & NDR_BUFFERS) { uint32_t level = ndr_push_get_switch_value(ndr, r); switch (level) { case DS_ROLE_BASIC_INFORMATION: NDR_CHECK(ndr_push_dssetup_DsRolePrimaryDomInfoBasic(ndr, NDR_BUFFERS, &r->basic)); break; case DS_ROLE_UPGRADE_STATUS: break; case DS_ROLE_OP_STATUS: break; default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u at %s", level, __location__); } } return NDR_ERR_SUCCESS; }
static NTSTATUS ndr_push_security_ace_object_ctr(struct ndr_push *ndr, int ndr_flags, const union security_ace_object_ctr *r) { int level; level = ndr_push_get_switch_value(ndr, r); if (ndr_flags & NDR_SCALARS) { switch (level) { case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_SCALARS, &r->object)); break; default: break; } } if (ndr_flags & NDR_BUFFERS) { switch (level) { case SEC_ACE_TYPE_ACCESS_ALLOWED_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; case SEC_ACE_TYPE_ACCESS_DENIED_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; case SEC_ACE_TYPE_SYSTEM_AUDIT_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; case SEC_ACE_TYPE_SYSTEM_ALARM_OBJECT: NDR_CHECK(ndr_push_security_ace_object(ndr, NDR_BUFFERS, &r->object)); break; default: break; } } return NT_STATUS_OK; }
static enum ndr_err_code ndr_push_xattr_NTACL_Info(struct ndr_push *ndr, int ndr_flags, const union xattr_NTACL_Info *r) { if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level)); switch (level) { case 1: { NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd)); break; } case 2: { NDR_CHECK(ndr_push_unique_ptr(ndr, r->sd_hs)); break; } default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case 1: if (r->sd) { NDR_CHECK(ndr_push_security_descriptor(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd)); } break; case 2: if (r->sd_hs) { NDR_CHECK(ndr_push_security_descriptor_hash(ndr, NDR_SCALARS|NDR_BUFFERS, r->sd_hs)); } break; default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } return NDR_ERR_SUCCESS; }
static enum ndr_err_code ndr_push_dnsRecordData(struct ndr_push *ndr, int ndr_flags, const union dnsRecordData *r) { if (ndr_flags & NDR_SCALARS) { uint32_t level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_union_align(ndr, 4)); switch (level) { case DNS_TYPE_TOMBSTONE: { NDR_CHECK(ndr_push_NTTIME(ndr, NDR_SCALARS, r->timestamp)); break; } case DNS_TYPE_A: { { uint32_t _flags_save_ipv4address = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_push_ipv4address(ndr, NDR_SCALARS, r->ipv4)); ndr->flags = _flags_save_ipv4address; } break; } case DNS_TYPE_NS: { NDR_CHECK(ndr_push_dnsp_name(ndr, NDR_SCALARS, r->ns)); break; } case DNS_TYPE_CNAME: { NDR_CHECK(ndr_push_dnsp_name(ndr, NDR_SCALARS, r->cname)); break; } case DNS_TYPE_SOA: { { uint32_t _flags_save_dnsp_soa = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_push_dnsp_soa(ndr, NDR_SCALARS, &r->soa)); ndr->flags = _flags_save_dnsp_soa; } break; } case DNS_TYPE_MX: { { uint32_t _flags_save_dnsp_mx = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_push_dnsp_mx(ndr, NDR_SCALARS, &r->mx)); ndr->flags = _flags_save_dnsp_mx; } break; } case DNS_TYPE_TXT: { NDR_CHECK(ndr_push_dnsp_string(ndr, NDR_SCALARS, r->txt)); break; } case DNS_TYPE_PTR: { NDR_CHECK(ndr_push_dnsp_name(ndr, NDR_SCALARS, r->ptr)); break; } case DNS_TYPE_HINFO: { NDR_CHECK(ndr_push_dnsp_hinfo(ndr, NDR_SCALARS, &r->hinfo)); break; } case DNS_TYPE_AAAA: { NDR_CHECK(ndr_push_ipv6address(ndr, NDR_SCALARS, r->ipv6)); break; } case DNS_TYPE_SRV: { { uint32_t _flags_save_dnsp_srv = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_push_dnsp_srv(ndr, NDR_SCALARS, &r->srv)); ndr->flags = _flags_save_dnsp_srv; } break; } default: { { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data)); ndr->flags = _flags_save_DATA_BLOB; } break; } } } if (ndr_flags & NDR_BUFFERS) { uint32_t level = ndr_push_get_switch_value(ndr, r); switch (level) { case DNS_TYPE_TOMBSTONE: break; case DNS_TYPE_A: break; case DNS_TYPE_NS: break; case DNS_TYPE_CNAME: break; case DNS_TYPE_SOA: break; case DNS_TYPE_MX: break; case DNS_TYPE_TXT: break; case DNS_TYPE_PTR: break; case DNS_TYPE_HINFO: break; case DNS_TYPE_AAAA: break; case DNS_TYPE_SRV: break; default: break; } } return NDR_ERR_SUCCESS; }
enum ndr_err_code ndr_push_drsuapi_DsBindInfo(struct ndr_push *ndr, int ndr_flags, const union drsuapi_DsBindInfo *r) { uint32_t _flags_save = ndr->flags; ndr->flags = ndr->flags & ~LIBNDR_FLAG_NDR64; NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags); if (ndr_flags & NDR_SCALARS) { uint32_t level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_union_align(ndr, 4)); switch (level) { case 24: { { struct ndr_push *_ndr_info24; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info24, 0, 24)); NDR_CHECK(ndr_push_drsuapi_DsBindInfo24(_ndr_info24, NDR_SCALARS, &r->info24)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info24, 0, 24)); } break; } case 28: { { struct ndr_push *_ndr_info28; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info28, 0, 28)); NDR_CHECK(ndr_push_drsuapi_DsBindInfo28(_ndr_info28, NDR_SCALARS, &r->info28)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info28, 0, 28)); } break; } case 48: { { struct ndr_push *_ndr_info48; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info48, 0, 48)); NDR_CHECK(ndr_push_drsuapi_DsBindInfo48(_ndr_info48, NDR_SCALARS, &r->info48)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info48, 0, 48)); } break; } case 52: { { struct ndr_push *_ndr_info52; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_info52, 0, 52)); NDR_CHECK(ndr_push_drsuapi_DsBindInfo52(_ndr_info52, NDR_SCALARS, &r->info52)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_info52, 0, 52)); } break; } default: { { struct ndr_push *_ndr_Fallback; NDR_CHECK(ndr_push_subcontext_start(ndr, &_ndr_Fallback, 0, level)); NDR_CHECK(ndr_push_drsuapi_DsBindInfoFallBack(_ndr_Fallback, NDR_SCALARS, &r->Fallback)); NDR_CHECK(ndr_push_subcontext_end(ndr, _ndr_Fallback, 0, level)); } break; } } } if (ndr_flags & NDR_BUFFERS) { uint32_t level = ndr_push_get_switch_value(ndr, r); switch (level) { case 24: break; case 28: break; case 48: break; case 52: break; default: break; } } ndr->flags = _flags_save; return NDR_ERR_SUCCESS; }
_PUBLIC_ enum ndr_err_code ndr_push_winreg_Data(struct ndr_push *ndr, int ndr_flags, const union winreg_Data *r) { { uint32_t _flags_save_UNION = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_LITTLE_ENDIAN); if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_union_align(ndr, 4)); switch (level) { case REG_NONE: { break; } case REG_SZ: { { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string)); ndr->flags = _flags_save_string; } break; } case REG_EXPAND_SZ: { { uint32_t _flags_save_string = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->string)); ndr->flags = _flags_save_string; } break; } case REG_BINARY: { { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->binary)); ndr->flags = _flags_save_DATA_BLOB; } break; } case REG_DWORD: { NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value)); break; } case REG_DWORD_BIG_ENDIAN: { { uint32_t _flags_save_uint32 = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_BIGENDIAN); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->value)); ndr->flags = _flags_save_uint32; } break; } case REG_MULTI_SZ: { { uint32_t _flags_save_string_array = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_NULLTERM); NDR_CHECK(ndr_push_string_array(ndr, NDR_SCALARS, r->string_array)); ndr->flags = _flags_save_string_array; } break; } default: { { uint32_t _flags_save_DATA_BLOB = ndr->flags; ndr_set_flags(&ndr->flags, LIBNDR_FLAG_REMAINING); NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->data)); ndr->flags = _flags_save_DATA_BLOB; } break; } } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case REG_NONE: break; case REG_SZ: break; case REG_EXPAND_SZ: break; case REG_BINARY: break; case REG_DWORD: break; case REG_DWORD_BIG_ENDIAN: break; case REG_MULTI_SZ: break; default: break; } } ndr->flags = _flags_save_UNION; } return NDR_ERR_SUCCESS; }
static enum ndr_err_code ndr_push_echo_Info(struct ndr_push *ndr, int ndr_flags, const union echo_Info *r) { if (ndr_flags & NDR_SCALARS) { int level = ndr_push_get_switch_value(ndr, r); NDR_CHECK(ndr_push_uint16(ndr, NDR_SCALARS, level)); switch (level) { case 1: { NDR_CHECK(ndr_push_echo_info1(ndr, NDR_SCALARS, &r->info1)); break; } case 2: { NDR_CHECK(ndr_push_echo_info2(ndr, NDR_SCALARS, &r->info2)); break; } case 3: { NDR_CHECK(ndr_push_echo_info3(ndr, NDR_SCALARS, &r->info3)); break; } case 4: { NDR_CHECK(ndr_push_STRUCT_echo_info4(ndr, NDR_SCALARS, &r->info4)); break; } case 5: { NDR_CHECK(ndr_push_echo_info5(ndr, NDR_SCALARS, &r->info5)); break; } case 6: { NDR_CHECK(ndr_push_echo_info6(ndr, NDR_SCALARS, &r->info6)); break; } case 7: { NDR_CHECK(ndr_push_echo_info7(ndr, NDR_SCALARS, &r->info7)); break; } default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } if (ndr_flags & NDR_BUFFERS) { int level = ndr_push_get_switch_value(ndr, r); switch (level) { case 1: break; case 2: break; case 3: break; case 4: break; case 5: break; case 6: break; case 7: break; default: return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level); } } return NDR_ERR_SUCCESS; }