diff fuhtark_test/include/winapi/mgm.h @ 1500:91c8c3b7cbf0

add: futhark tests for generating vulkan api
author sam <sam@basx.dev>
date Wed, 26 Nov 2025 21:36:48 +0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fuhtark_test/include/winapi/mgm.h	Wed Nov 26 21:36:48 2025 +0700
@@ -0,0 +1,74 @@
+/**
+ * This file has no copyright assigned and is placed in the Public Domain.
+ * This file is part of the w64 mingw-runtime package.
+ * No warranty is given; refer to the file DISCLAIMER within this package.
+ */
+#ifndef _MGM_H_
+#define _MGM_H_
+
+typedef struct _MGM_IF_ENTRY {
+  DWORD dwIfIndex;
+  DWORD dwIfNextHopAddr;
+  WINBOOL bIGMP;
+  WINBOOL bIsEnabled;
+} MGM_IF_ENTRY,*PMGM_IF_ENTRY;
+
+typedef DWORD (*PMGM_RPF_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,PDWORD pdwInIfIndex,PDWORD pdwInIfNextHopAddr,PDWORD pdwUpStreamNbr,DWORD dwHdrSize,PBYTE pbPacketHdr,PBYTE pbRoute);
+typedef DWORD (*PMGM_CREATION_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwInIfIndex,DWORD dwInIfNextHopAddr,DWORD dwIfCount,PMGM_IF_ENTRY pmieOutIfList);
+typedef DWORD (*PMGM_PRUNE_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr,WINBOOL bMemberDelete,PDWORD pdwTimeout);
+typedef DWORD (*PMGM_JOIN_ALERT_CALLBACK)(DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,WINBOOL bMemberUpdate);
+typedef DWORD (*PMGM_WRONG_IF_CALLBACK)(DWORD dwSourceAddr,DWORD dwGroupAddr,DWORD dwIfIndex,DWORD dwIfNextHopAddr,DWORD dwHdrSize,PBYTE pbPacketHdr);
+typedef DWORD (*PMGM_LOCAL_JOIN_CALLBACK) (DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
+typedef DWORD (*PMGM_LOCAL_LEAVE_CALLBACK) (DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
+typedef DWORD (*PMGM_DISABLE_IGMP_CALLBACK) (DWORD dwIfIndex,DWORD dwIfNextHopAddr);
+typedef DWORD (*PMGM_ENABLE_IGMP_CALLBACK) (DWORD dwIfIndex,DWORD dwIfNextHopAddr);
+
+typedef struct _ROUTING_PROTOCOL_CONFIG {
+  DWORD dwCallbackFlags;
+  PMGM_RPF_CALLBACK pfnRpfCallback;
+  PMGM_CREATION_ALERT_CALLBACK pfnCreationAlertCallback;
+  PMGM_PRUNE_ALERT_CALLBACK pfnPruneAlertCallback;
+  PMGM_JOIN_ALERT_CALLBACK pfnJoinAlertCallback;
+  PMGM_WRONG_IF_CALLBACK pfnWrongIfCallback;
+  PMGM_LOCAL_JOIN_CALLBACK pfnLocalJoinCallback;
+  PMGM_LOCAL_LEAVE_CALLBACK pfnLocalLeaveCallback;
+  PMGM_DISABLE_IGMP_CALLBACK pfnDisableIgmpCallback;
+  PMGM_ENABLE_IGMP_CALLBACK pfnEnableIgmpCallback;
+} ROUTING_PROTOCOL_CONFIG,*PROUTING_PROTOCOL_CONFIG;
+
+typedef enum _MGM_ENUM_TYPES {
+  ANY_SOURCE = 0,ALL_SOURCES
+} MGM_ENUM_TYPES;
+
+typedef struct _SOURCE_GROUP_ENTRY {
+  DWORD dwSourceAddr;
+  DWORD dwSourceMask;
+  DWORD dwGroupAddr;
+  DWORD dwGroupMask;
+} SOURCE_GROUP_ENTRY,*PSOURCE_GROUP_ENTRY;
+
+#define MGM_JOIN_STATE_FLAG 0x00000001
+#define MGM_FORWARD_STATE_FLAG 0x00000002
+
+#define MGM_MFE_STATS_0 0x00000001
+#define MGM_MFE_STATS_1 0x00000002
+
+DWORD MgmRegisterMProtocol(PROUTING_PROTOCOL_CONFIG prpiInfo,DWORD dwProtocolId,DWORD dwComponentId,HANDLE *phProtocol);
+DWORD MgmDeRegisterMProtocol(HANDLE hProtocol);
+DWORD MgmTakeInterfaceOwnership(HANDLE hProtocol,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
+DWORD MgmReleaseInterfaceOwnership(HANDLE hProtocol,DWORD dwIfIndex,DWORD dwIfNextHopAddr);
+DWORD MgmGetProtocolOnInterface(DWORD dwIfIndex,DWORD dwIfNextHopAddr,PDWORD pdwIfProtocolId,PDWORD pdwIfComponentId);
+DWORD MgmAddGroupMembershipEntry(HANDLE hProtocol,DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopIPAddr,DWORD dwFlags);
+DWORD MgmDeleteGroupMembershipEntry(HANDLE hProtocol,DWORD dwSourceAddr,DWORD dwSourceMask,DWORD dwGroupAddr,DWORD dwGroupMask,DWORD dwIfIndex,DWORD dwIfNextHopIPAddr,DWORD dwFlags);
+DWORD MgmGetMfe(PMIB_IPMCAST_MFE pimm,PDWORD pdwBufferSize,PBYTE pbBuffer);
+DWORD MgmGetFirstMfe(PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries);
+DWORD MgmGetNextMfe(PMIB_IPMCAST_MFE pimmStart,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries);
+DWORD MgmGetMfeStats(PMIB_IPMCAST_MFE pimm,PDWORD pdwBufferSize,PBYTE pbBuffer,DWORD dwFlags);
+DWORD MgmGetFirstMfeStats(PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries,DWORD dwFlags);
+DWORD MgmGetNextMfeStats(PMIB_IPMCAST_MFE pimmStart,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries,DWORD dwFlags);
+DWORD MgmGroupEnumerationStart(HANDLE hProtocol,MGM_ENUM_TYPES metEnumType,HANDLE *phEnumHandle);
+DWORD MgmGroupEnumerationGetNext(HANDLE hEnum,PDWORD pdwBufferSize,PBYTE pbBuffer,PDWORD pdwNumEntries);
+DWORD MgmGroupEnumerationEnd(HANDLE hEnum);
+DWORD MgmSetMfe(HANDLE hProtocol,PMIB_IPMCAST_MFE pmimm);
+
+#endif