Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef _CALLOUT_H_
      7 #define _CALLOUT_H_
      8 
      9 #ifdef __cplusplus
     10 extern "C" {
     11 #endif
     12 
     13   typedef DWORD DHCP_IP_ADDRESS;
     14   typedef struct _DHCP_SERVER_OPTIONS {
     15     BYTE *MessageType;
     16     DHCP_IP_ADDRESS UNALIGNED *SubnetMask;
     17     DHCP_IP_ADDRESS UNALIGNED *RequestedAddress;
     18     DWORD UNALIGNED *RequestLeaseTime;
     19     BYTE *OverlayFields;
     20     DHCP_IP_ADDRESS UNALIGNED *RouterAddress;
     21     DHCP_IP_ADDRESS UNALIGNED *Server;
     22     BYTE *ParameterRequestList;
     23     DWORD ParameterRequestListLength;
     24     CHAR *MachineName;
     25     DWORD MachineNameLength;
     26     BYTE ClientHardwareAddressType;
     27     BYTE ClientHardwareAddressLength;
     28     BYTE *ClientHardwareAddress;
     29     CHAR *ClassIdentifier;
     30     DWORD ClassIdentifierLength;
     31     BYTE *VendorClass;
     32     DWORD VendorClassLength;
     33     DWORD DNSFlags;
     34     DWORD DNSNameLength;
     35     LPBYTE DNSName;
     36     BOOLEAN DSDomainNameRequested;
     37     CHAR *DSDomainName;
     38     DWORD DSDomainNameLen;
     39     DWORD UNALIGNED *ScopeId;
     40   } DHCP_SERVER_OPTIONS,*LPDHCP_SERVER_OPTIONS;
     41 
     42 #define DHCP_CALLOUT_LIST_KEY L"System\\CurrentControlSet\\Services\\DHCPServer\\Parameters"
     43 #define DHCP_CALLOUT_LIST_VALUE L"CalloutDlls"
     44 #define DHCP_CALLOUT_LIST_TYPE REG_MULTI_SZ
     45 #define DHCP_CALLOUT_ENTRY_POINT "DhcpServerCalloutEntry"
     46 
     47 #define DHCP_CONTROL_START 0x00000001
     48 #define DHCP_CONTROL_STOP 0x00000002
     49 #define DHCP_CONTROL_PAUSE 0x00000003
     50 #define DHCP_CONTROL_CONTINUE 0x00000004
     51 
     52 #define DHCP_DROP_DUPLICATE 0x00000001
     53 #define DHCP_DROP_NOMEM 0x00000002
     54 #define DHCP_DROP_INTERNAL_ERROR 0x00000003
     55 #define DHCP_DROP_TIMEOUT 0x00000004
     56 #define DHCP_DROP_UNAUTH 0x00000005
     57 #define DHCP_DROP_PAUSED 0x00000006
     58 #define DHCP_DROP_NO_SUBNETS 0x00000007
     59 #define DHCP_DROP_INVALID 0x00000008
     60 #define DHCP_DROP_WRONG_SERVER 0x00000009
     61 #define DHCP_DROP_NOADDRESS 0x0000000A
     62 #define DHCP_DROP_PROCESSED 0x0000000B
     63 #define DHCP_DROP_GEN_FAILURE 0x00000100
     64 #define DHCP_SEND_PACKET 0x10000000
     65 #define DHCP_PROB_CONFLICT 0x20000001
     66 #define DHCP_PROB_DECLINE 0x20000002
     67 #define DHCP_PROB_RELEASE 0x20000003
     68 #define DHCP_PROB_NACKED 0x20000004
     69 #define DHCP_GIVE_ADDRESS_NEW 0x30000001
     70 #define DHCP_GIVE_ADDRESS_OLD 0x30000002
     71 #define DHCP_CLIENT_BOOTP 0x30000003
     72 #define DHCP_CLIENT_DHCP 0x30000004
     73 
     74   typedef DWORD (WINAPI *LPDHCP_CONTROL)(DWORD dwControlCode,LPVOID lpReserved);
     75   typedef DWORD (WINAPI *LPDHCP_NEWPKT)(LPBYTE *Packet,DWORD *PacketSize,DWORD IpAddress,LPVOID Reserved,LPVOID *PktContext,LPBOOL ProcessIt);
     76   typedef DWORD (WINAPI *LPDHCP_DROP_SEND)(LPBYTE *Packet,DWORD *PacketSize,DWORD ControlCode,DWORD IpAddress,LPVOID Reserved,LPVOID PktContext);
     77   typedef DWORD (WINAPI *LPDHCP_PROB)(LPBYTE Packet,DWORD PacketSize,DWORD ControlCode,DWORD IpAddress,DWORD AltAddress,LPVOID Reserved,LPVOID PktContext);
     78   typedef DWORD (WINAPI *LPDHCP_GIVE_ADDRESS)(LPBYTE Packet,DWORD PacketSize,DWORD ControlCode,DWORD IpAddress,DWORD AltAddress,DWORD AddrType,DWORD LeaseTime,LPVOID Reserved,LPVOID PktContext);
     79   typedef DWORD (WINAPI *LPDHCP_HANDLE_OPTIONS)(LPBYTE Packet,DWORD PacketSize,LPVOID Reserved,LPVOID PktContext,LPDHCP_SERVER_OPTIONS ServerOptions);
     80   typedef DWORD (WINAPI *LPDHCP_DELETE_CLIENT)(DWORD IpAddress,LPBYTE HwAddress,ULONG HwAddressLength,DWORD Reserved,DWORD ClientType);
     81 
     82   typedef struct _DHCP_CALLOUT_TABLE {
     83     LPDHCP_CONTROL DhcpControlHook;
     84     LPDHCP_NEWPKT DhcpNewPktHook;
     85     LPDHCP_DROP_SEND DhcpPktDropHook;
     86     LPDHCP_DROP_SEND DhcpPktSendHook;
     87     LPDHCP_PROB DhcpAddressDelHook;
     88     LPDHCP_GIVE_ADDRESS DhcpAddressOfferHook;
     89     LPDHCP_HANDLE_OPTIONS DhcpHandleOptionsHook;
     90     LPDHCP_DELETE_CLIENT DhcpDeleteClientHook;
     91     LPVOID DhcpExtensionHook;
     92     LPVOID DhcpReservedHook;
     93   } DHCP_CALLOUT_TABLE,*LPDHCP_CALLOUT_TABLE;
     94 
     95   typedef DWORD (WINAPI *LPDHCP_ENTRY_POINT_FUNC)(LPWSTR ChainDlls,DWORD CalloutVersion,LPDHCP_CALLOUT_TABLE CalloutTbl);
     96 
     97 #ifdef __cplusplus
     98 }
     99 #endif
    100 #endif
    101