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.
186 lines
3.5 KiB
186 lines
3.5 KiB
/*++
|
|
|
|
Copyright (c) 2001 Microsoft Corporation
|
|
|
|
Abstract:
|
|
|
|
Defines and prototypes for the 6to4 service
|
|
|
|
--*/
|
|
|
|
#define SECONDS 1
|
|
#define MINUTES (60 * SECONDS)
|
|
#define HOURS (60 * MINUTES)
|
|
#define DAYS (24 * HOURS)
|
|
|
|
#define V4_COMPAT_IFINDEX 2
|
|
#define SIX_TO_FOUR_IFINDEX 3
|
|
|
|
#define KEY_GLOBAL L"System\\CurrentControlSet\\Services\\6to4\\Config"
|
|
#define KEY_INTERFACES L"System\\CurrentControlSet\\Services\\6to4\\Interfaces"
|
|
|
|
typedef struct _ADDR_INFO {
|
|
LPSOCKADDR lpSockaddr;
|
|
INT iSockaddrLength;
|
|
|
|
ULONG ul6over4IfIndex;
|
|
} ADDR_INFO, *PADDR_INFO;
|
|
|
|
typedef struct _ADDR_LIST {
|
|
INT iAddressCount;
|
|
ADDR_INFO Address[1];
|
|
} ADDR_LIST, *PADDR_LIST;
|
|
|
|
extern ADDR_LIST *g_pIpv4AddressList;
|
|
|
|
//////////////////////////
|
|
// Routines from svcmain.c
|
|
//////////////////////////
|
|
|
|
VOID
|
|
SetHelperServiceStatus(
|
|
IN DWORD dwState,
|
|
IN DWORD dwErr);
|
|
|
|
typedef enum {
|
|
DEFAULT = 0,
|
|
AUTOMATIC,
|
|
ENABLED,
|
|
DISABLED
|
|
} STATE;
|
|
|
|
//////////////////////////
|
|
// Routines from 6to4svc.c
|
|
//////////////////////////
|
|
|
|
extern STATE g_stService;
|
|
extern SOCKET g_sIPv4Socket;
|
|
|
|
VOID
|
|
StopHelperService(
|
|
IN DWORD Error);
|
|
|
|
VOID
|
|
CleanupHelperService(
|
|
VOID);
|
|
|
|
DWORD
|
|
OnConfigChange(
|
|
VOID);
|
|
|
|
DWORD
|
|
StartHelperService(
|
|
VOID);
|
|
|
|
VOID
|
|
UpdateServiceRequirements(
|
|
IN PIP_ADAPTER_ADDRESSES Adapters);
|
|
|
|
VOID
|
|
IncEventCount(
|
|
IN PCHAR pszWhere);
|
|
|
|
VOID
|
|
DecEventCount(
|
|
IN PCHAR pszWhere);
|
|
|
|
BOOL
|
|
ConvertOemToUnicode(
|
|
IN LPSTR OemString,
|
|
OUT LPWSTR UnicodeString,
|
|
IN int UnicodeLen);
|
|
|
|
ULONG
|
|
GetInteger(
|
|
IN HKEY hKey,
|
|
IN LPCTSTR lpName,
|
|
IN ULONG ulDefault);
|
|
|
|
VOID
|
|
GetString(
|
|
IN HKEY hKey,
|
|
IN LPCTSTR lpName,
|
|
IN PWCHAR pBuff,
|
|
IN ULONG ulLength,
|
|
IN PWCHAR pDefault);
|
|
|
|
DWORD
|
|
ConfigureAddressUpdate(
|
|
IN u_int Interface,
|
|
IN SOCKADDR_IN6 *Sockaddr,
|
|
IN u_int Lifetime,
|
|
IN int Type,
|
|
IN u_int PrefixConf,
|
|
IN u_int SuffixConf);
|
|
|
|
//////////////////////////
|
|
// Routines from ipv6.c
|
|
//////////////////////////
|
|
|
|
extern void
|
|
ForEachInterface(void (*func)(IPV6_INFO_INTERFACE *, void *), void *Context);
|
|
|
|
extern int
|
|
InitIPv6Library(void);
|
|
|
|
extern void
|
|
UninitIPv6Library(void);
|
|
|
|
extern BOOL
|
|
ReconnectInterface(PWCHAR AdapterName);
|
|
|
|
extern int
|
|
UpdateRouteTable(IPV6_INFO_ROUTE_TABLE *Route);
|
|
|
|
extern int
|
|
UpdateAddress(IPV6_UPDATE_ADDRESS *Address);
|
|
|
|
extern u_int
|
|
ConfirmIPv6Reachability(SOCKADDR_IN6 *Dest, u_int Timeout);
|
|
|
|
extern BOOL
|
|
DeleteInterface(u_int IfIndex);
|
|
|
|
extern u_int
|
|
CreateV6V4Interface(IN_ADDR SrcAddr, IN_ADDR DstAddr);
|
|
|
|
extern u_int
|
|
Create6over4Interface(IN_ADDR SrcAddr);
|
|
|
|
extern int
|
|
UpdateInterface(IPV6_INFO_INTERFACE *Update);
|
|
|
|
extern IPV6_INFO_INTERFACE *
|
|
GetInterfaceStackInfo(WCHAR *pwszAdapterName);
|
|
|
|
extern BOOL
|
|
UpdateRouterLinkAddress(u_int IfIndex, IN_ADDR SrcAddr, IN_ADDR DstAddr);
|
|
|
|
extern VOID
|
|
GetFirstSitePrefix(ULONG IfIndex, IPV6_INFO_SITE_PREFIX *Prefix);
|
|
|
|
//////////////////////////
|
|
// Routines from dyndns.c
|
|
//////////////////////////
|
|
|
|
DWORD
|
|
StartIpv6AddressChangeNotification(VOID);
|
|
|
|
VOID
|
|
StopIpv6AddressChangeNotification(VOID);
|
|
|
|
VOID CALLBACK
|
|
OnIpv6AddressChange(IN PVOID lpParameter, IN BOOLEAN TimerOrWaitFired);
|
|
|
|
//////////////////////////
|
|
// Routines from proxy.c
|
|
//////////////////////////
|
|
|
|
BOOL
|
|
QueueUpdateGlobalPortState(IN PVOID Unused);
|
|
|
|
VOID
|
|
UninitializePorts(VOID);
|
|
|
|
VOID
|
|
InitializePorts(VOID);
|