Signed-off-by: Austin English austinenglish@gmail.com --- dlls/ntdsapi/ntdsapi.c | 23 +++++++++++++++++++ dlls/ntdsapi/ntdsapi.spec | 4 ++-- include/ntdsapi.h | 56 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 81 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdsapi/ntdsapi.c b/dlls/ntdsapi/ntdsapi.c index ee0c8379c3..afb6c7a652 100644 --- a/dlls/ntdsapi/ntdsapi.c +++ b/dlls/ntdsapi/ntdsapi.c @@ -204,6 +204,9 @@ DWORD WINAPI DsServerRegisterSpnW(DS_SPN_WRITE_OP operation, LPCWSTR ServiceClas return ERROR_CALL_NOT_IMPLEMENTED; }
+/*********************************************************************** + * DsClientMakeSpnForTargetServerW (NTDSAPI.@) + */ DWORD WINAPI DsClientMakeSpnForTargetServerW(LPCWSTR class, LPCWSTR name, DWORD *buflen, LPWSTR buf) { DWORD len; @@ -229,3 +232,23 @@ DWORD WINAPI DsClientMakeSpnForTargetServerW(LPCWSTR class, LPCWSTR name, DWORD
return ERROR_SUCCESS; } + +/*********************************************************************** + * DsCrackNamesA (NTDSAPI.@) + */ +DWORD WINAPI DsCrackNamesA(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired, + DWORD num, const CHAR *names, PDS_NAME_RESULT *result) +{ + FIXME("(%p %u %u %u %u %s %p stub\n", handle, flags, offered, desired, num, wine_dbgstr_a(names), result); + return ERROR_CALL_NOT_IMPLEMENTED; +} + +/*********************************************************************** + * DsCrackNamesW (NTDSAPI.@) + */ +DWORD WINAPI DsCrackNamesW(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired, + DWORD num, const WCHAR *names, PDS_NAME_RESULT *result) +{ + FIXME("(%p %u %u %u %u %s %p stub\n", handle, flags, offered, desired, num, wine_dbgstr_w(names), result); + return ERROR_CALL_NOT_IMPLEMENTED; +} diff --git a/dlls/ntdsapi/ntdsapi.spec b/dlls/ntdsapi/ntdsapi.spec index 925cb71358..16842232cf 100644 --- a/dlls/ntdsapi/ntdsapi.spec +++ b/dlls/ntdsapi/ntdsapi.spec @@ -8,8 +8,8 @@ @ stub DsBindWithSpnW @ stub DsClientMakeSpnForTargetServerA @ stdcall DsClientMakeSpnForTargetServerW(wstr wstr ptr ptr) -@ stub DsCrackNamesA -@ stub DsCrackNamesW +@ stdcall DsCrackNamesA(ptr long long long long str ptr) +@ stdcall DsCrackNamesW(ptr long long long long wstr ptr) @ stub DsCrackSpn2A @ stub DsCrackSpn2W @ stub DsCrackSpn3W diff --git a/include/ntdsapi.h b/include/ntdsapi.h index 672ea635d2..c3315070bb 100644 --- a/include/ntdsapi.h +++ b/include/ntdsapi.h @@ -33,6 +33,28 @@ DWORD WINAPI DsMakeSpnA(LPCSTR, LPCSTR, LPCSTR, USHORT, LPCSTR, DWORD*, LPSTR); DWORD WINAPI DsMakeSpnW(LPCWSTR, LPCWSTR, LPCWSTR, USHORT, LPCWSTR, DWORD*, LPWSTR); #define DsMakeSpn WINELIB_NAME_AW(DsMakeSpn)
+typedef enum { + DS_NAME_NO_FLAGS = 0x0, + DS_NAME_FLAG_SYNTACTICAL_ONLY = 0x1, + DS_NAME_FLAG_EVAL_AT_DC = 0x2, + DS_NAME_FLAG_GCVERIFY = 0x4, + DS_NAME_FLAG_TRUST_REFERRAL = 0x8 +} DS_NAME_FLAGS; + +typedef enum { + DS_UNKNOWN_NAME = 0, + DS_FQDN_1779_NAME = 1, + DS_NT4_ACCOUNT_NAME = 2, + DS_DISPLAY_NAME = 3, + DS_UNIQUE_ID_NAME = 6, + DS_CANONICAL_NAME = 7, + DS_USER_PRINCIPAL_NAME = 8, + DS_CANONICAL_NAME_EX = 9, + DS_SERVICE_PRINCIPAL_NAME = 10, + DS_SID_OR_SID_HISTORY_NAME = 11, + DS_DNS_DOMAIN_NAME = 12 +} DS_NAME_FORMAT; + typedef enum { DS_SPN_DNS_HOST = 0, @@ -50,6 +72,40 @@ typedef enum DS_SPN_DELETE_SPN_OP = 2 } DS_SPN_WRITE_OP;
+typedef struct { + DWORD status; + CHAR pDomain; + CHAR pName; +} DS_NAME_RESULT_ITEMA, *PDS_NAME_RESULT_ITEMA; + +typedef struct { + DWORD cItems; + PDS_NAME_RESULT_ITEMA rItems; +} DS_NAME_RESULTA, *PDS_NAME_RESULTA; + +typedef struct { + DWORD status; + WCHAR pDomain; + WCHAR pName; +} DS_NAME_RESULT_ITEMW, *PDS_NAME_RESULT_ITEMW; + +typedef struct { + DWORD cItems; + PDS_NAME_RESULT_ITEMW rItems; +} DS_NAME_RESULTW, *PDS_NAME_RESULTW; + +#ifdef UNICODE +#define DS_NAME_RESULT DS_NAME_RESULTW +#define PDS_NAME_RESULT PDS_NAME_RESULTW +#define DS_NAME_RESULT_ITEM DS_NAME_RESULT_ITEMW +#define PDS_NAME_RESULT_ITEM PDS_NAME_RESULT_ITEMW +#else +#define DS_NAME_RESULT DS_NAME_RESULTA +#define PDS_NAME_RESULT PDS_NAME_RESULTA +#define DS_NAME_RESULT_ITEM DS_NAME_RESULT_ITEMA +#define PDS_NAME_RESULT_ITEM PDS_NAME_RESULT_ITEMA +#endif + DWORD WINAPI DsServerRegisterSpnA(DS_SPN_WRITE_OP operation, LPCSTR ServiceClass, LPCSTR UserObjectDN); DWORD WINAPI DsServerRegisterSpnW(DS_SPN_WRITE_OP operation, LPCWSTR ServiceClass, LPCWSTR UserObjectDN); #define DsServerRegisterSpn WINELIB_NAME_AW(DsServerRegisterSpn)
Signed-off-by: Austin English austinenglish@gmail.com --- dlls/iphlpapi/iphlpapi.spec | 2 +- dlls/iphlpapi/iphlpapi_main.c | 11 +++++++++++ include/netioapi.h | 32 ++++++++++++++++++++++++++++++++ include/nldef.h | 9 +++++++++ 4 files changed, 53 insertions(+), 1 deletion(-)
diff --git a/dlls/iphlpapi/iphlpapi.spec b/dlls/iphlpapi/iphlpapi.spec index bbd1ed8071..1686644de0 100644 --- a/dlls/iphlpapi/iphlpapi.spec +++ b/dlls/iphlpapi/iphlpapi.spec @@ -102,7 +102,7 @@ #@ stub GetIpErrorString #@ stub GetIpForwardEntry2 @ stdcall GetIpForwardTable( ptr ptr long ) -#@ stub GetIpForwardTable2 +@ stdcall GetIpForwardTable2( long ptr ) @ stub GetIpForwardTableFromStack #@ stub GetIpInterfaceEntry #@ stub GetIpInterfaceTable diff --git a/dlls/iphlpapi/iphlpapi_main.c b/dlls/iphlpapi/iphlpapi_main.c index d81fb6a7ef..7911e9d8cf 100644 --- a/dlls/iphlpapi/iphlpapi_main.c +++ b/dlls/iphlpapi/iphlpapi_main.c @@ -3264,3 +3264,14 @@ PCHAR WINAPI IPHLP_if_indextoname(NET_IFINDEX index, PCHAR name)
return getInterfaceNameByIndex(index, name); } + +/****************************************************************** + * GetIpForwardTable2 (IPHLPAPI.@) + */ +DWORD WINAPI GetIpForwardTable2(ADDRESS_FAMILY family, PMIB_IPFORWARD_TABLE2 *table) +{ + static int once; + + if (!once++) FIXME("(%u %p): stub\n", family, table); + return ERROR_NOT_SUPPORTED; +} diff --git a/include/netioapi.h b/include/netioapi.h index 11cadf6e37..e770859dc6 100644 --- a/include/netioapi.h +++ b/include/netioapi.h @@ -21,6 +21,10 @@
#include <ntddndis.h>
+#ifndef ANY_SIZE +#define ANY_SIZE 1 +#endif + typedef enum _MIB_IF_TABLE_LEVEL { MibIfTableNormal, @@ -158,6 +162,34 @@ typedef struct _MIB_UNICASTIPADDRESS_TABLE MIB_UNICASTIPADDRESS_ROW Table[1]; } MIB_UNICASTIPADDRESS_TABLE, *PMIB_UNICASTIPADDRESS_TABLE;
+typedef struct _IP_ADDRESS_PREFIX { + SOCKADDR_INET Prefix; + UINT8 PrefixLength; +} IP_ADDRESS_PREFIX, *PIP_ADDRESS_PREFIX; + +typedef struct _MIB_IPFORWARD_ROW2 { + NET_LUID InterfaceLuid; + NET_IFINDEX InterfaceIndex; + IP_ADDRESS_PREFIX DestinationPrefix; + SOCKADDR_INET NextHop; + UCHAR SitePrefixLength; + ULONG ValidLifetime; + ULONG PreferredLifetime; + ULONG Metric; + NL_ROUTE_PROTOCOL Protocol; + BOOLEAN Loopback; + BOOLEAN AutoconfigureAddress; + BOOLEAN Publish; + BOOLEAN Immortal; + ULONG Age; + NL_ROUTE_ORIGIN Origin; +} MIB_IPFORWARD_ROW2, *PMIB_IPFORWARD_ROW2; + +typedef struct _MIB_IPFORWARD_TABLE2 { + ULONG NumEntries; + MIB_IPFORWARD_ROW2 Table[ANY_SIZE]; +} MIB_IPFORWARD_TABLE2, *PMIB_IPFORWARD_TABLE2; + typedef VOID (WINAPI *PIPINTERFACE_CHANGE_CALLBACK)(PVOID, PMIB_IPINTERFACE_ROW, MIB_NOTIFICATION_TYPE); typedef VOID (WINAPI *PUNICAST_IPADDRESS_CHANGE_CALLBACK)(PVOID, PMIB_UNICASTIPADDRESS_ROW, diff --git a/include/nldef.h b/include/nldef.h index 1f96773c8e..983b96c552 100644 --- a/include/nldef.h +++ b/include/nldef.h @@ -28,6 +28,15 @@ typedef enum IpPrefixOriginUnchanged = 16, } NL_PREFIX_ORIGIN;
+typedef enum _NL_ROUTE_ORIGIN +{ + NlroManual, + NlroWellKnown, + NlroDHCP, + NlroRouterAdvertisement, + Nlro6to4, +} NL_ROUTE_ORIGIN, *PNL_ROUTE_ORIGIN; + typedef enum { IpSuffixOriginOther = 0,
Hi
On 06/04/18 10:40, Austin English wrote:
+/***********************************************************************
DsCrackNamesA (NTDSAPI.@)
- */
+DWORD WINAPI DsCrackNamesA(HANDLE handle, DS_NAME_FLAGS flags, DS_NAME_FORMAT offered, DS_NAME_FORMAT desired,
DWORD num, const CHAR *names, PDS_NAME_RESULT *result)
name sould be "const char **", since it's an array of names. Same goes for W version
Could you please add them to the header (ntdsapi.h) as well?
Regards Alistair.