Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

91 lines
2.1 KiB

#define STRDEF(s, d) (s && (s)[0] != '\0')?(s):(d)
#define LIST_HEAD(name, type) \
struct name { \
struct type *lh_first; /* first element */ \
}
#define LIST_ENTRY(type) \
struct { \
struct type *le_next; /* next element */ \
struct type **le_prev; /* address of previous next element */ \
}
#define LIST_INIT(head) { \
(head)->lh_first = NULL; \
}
#define LIST_INSERT_HEAD(head, elm, field) { \
if (((elm)->field.le_next = (head)->lh_first) != NULL) \
(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
(head)->lh_first = (elm); \
(elm)->field.le_prev = &(head)->lh_first; \
}
#define LIST_REMOVE(elm, field) { \
if ((elm)->field.le_next != NULL) \
(elm)->field.le_next->field.le_prev = \
(elm)->field.le_prev; \
*(elm)->field.le_prev = (elm)->field.le_next; \
}
struct name_list {
LIST_ENTRY(name_list) list;
LPTSTR name;
};
typedef struct name_list name_list_t;
#define NewNameList() \
(name_list_t *)calloc(sizeof(name_list_t), 1)
struct krb5_realm {
LIST_ENTRY(krb5_realm) list;
LIST_HEAD(kdc, name_list) kdc;
LIST_HEAD(kpasswd, name_list) kpasswd;
LIST_HEAD(altname, name_list) altname;
DWORD realm_flags;
DWORD ap_req_chksum;
DWORD preauth_type;
TCHAR name[1];
};
typedef struct krb5_realm krb5_realm_t;
#define NewRealm(l) (krb5_realm_t *)calloc(sizeof(krb5_realm_t) + (l*sizeof(TCHAR)), 1)
struct krb5_rgy {
LIST_HEAD(realms, krb5_realm) realms;
};
typedef struct krb5_rgy krb5_rgy_t;
struct enctype_entry
{
const struct enctype_lookup_entry *ktt;
BOOL used;
};
typedef struct enctype_entry enctype_entry_t;
#define REGKEY TEXT("system\\currentcontrolset\\control\\lsa\\kerberos")
#ifndef REG_SZ
#define REG_SZ 0x0001
#endif
#ifndef REG_BINARY
#define REG_BINARY 0x0003
#endif
#ifndef REG_DWORD
#define REG_DWORD 0x0004
#endif
#ifndef REG_MULTI_SZ
#define REG_MULTI_SZ 0x0007
#endif
#ifndef HKEY_LOCAL_MACHINE
#define HKEY_LOCAL_MACHINE 0x80000002
#define HKEY_DYN_DATA 0x80000006
#endif
UINT Krb5NdiCreate(void);
UINT Krb5NdiInstall(krb5_rgy_t*);
UINT Krb5NdiDestroy(krb5_rgy_t*);