Leaked source code of windows server 2003
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.

216 lines
4.0 KiB

  1. //============================================================================
  2. // Copyright (c) 1995, Microsoft Corporation
  3. //
  4. // File: scope.h
  5. //
  6. // History:
  7. // V Raman June-25-1997 Created.
  8. //
  9. // Prototypes for functions that implement the admin-scoped boundaries
  10. //============================================================================
  11. #ifndef _SCOPE_H_
  12. #define _SCOPE_H_
  13. DWORD
  14. APIENTRY
  15. MgmBlockGroups(
  16. IN DWORD dwFirstGroup,
  17. IN DWORD dwLastGroup,
  18. IN DWORD dwIfIndex,
  19. IN DWORD dwIfNextHopAddr
  20. );
  21. DWORD
  22. APIENTRY
  23. MgmUnBlockGroups(
  24. IN DWORD dwFirstGroup,
  25. IN DWORD dwLastGroup,
  26. IN DWORD dwIfIndex,
  27. IN DWORD dwIfNextHopAddr
  28. );
  29. //
  30. // Routines that invoke the NEW and DELETE member callbacks for
  31. // protocols as per the interop rules
  32. //
  33. VOID
  34. InvokePruneAlertCallbacks(
  35. PGROUP_ENTRY pge,
  36. PSOURCE_ENTRY pse,
  37. DWORD dwIfIndex,
  38. DWORD dwIfNextHopAddr,
  39. PPROTOCOL_ENTRY ppe
  40. );
  41. VOID
  42. InvokeJoinAlertCallbacks(
  43. PGROUP_ENTRY pge,
  44. PSOURCE_ENTRY pse,
  45. POUT_IF_ENTRY poie,
  46. BOOL bIGMP,
  47. PPROTOCOL_ENTRY ppe
  48. );
  49. //
  50. // Node in the Outstanding Join List
  51. //
  52. typedef struct _JOIN_ENTRY
  53. {
  54. LIST_ENTRY leJoinList;
  55. DWORD dwSourceAddr;
  56. DWORD dwSourceMask;
  57. DWORD dwGroupAddr;
  58. DWORD dwGroupMask;
  59. DWORD dwIfIndex;
  60. DWORD dwIfNextHopAddr;
  61. BOOL bJoin;
  62. } JOIN_ENTRY, *PJOIN_ENTRY;
  63. //
  64. // Functions to manipulate the join list
  65. //
  66. DWORD
  67. AddToOutstandingJoinList(
  68. DWORD dwSourceAddr,
  69. DWORD dwSourceMask,
  70. DWORD dwGroupAddr,
  71. DWORD dwGroupMask,
  72. DWORD dwIfIndex,
  73. DWORD dwIfNextHopAddr,
  74. BOOL bJoin
  75. );
  76. VOID
  77. InvokeOutstandingCallbacks(
  78. );
  79. //
  80. // Functions to manipulate the check for creation alert list
  81. //
  82. VOID
  83. AddToCheckForCreationAlertList(
  84. DWORD dwGroupAddr,
  85. DWORD dwGroupMask,
  86. DWORD dwSourceAddr,
  87. DWORD dwSourceMask,
  88. DWORD dwInIfIndex,
  89. DWORD dwInIfNextHopAddr,
  90. PLIST_ENTRY pleForwardList
  91. );
  92. VOID
  93. FreeList(
  94. PLIST_ENTRY pleForwardList
  95. );
  96. BOOL
  97. IsForwardingEnabled(
  98. DWORD dwGroupAddr,
  99. DWORD dwGroupMask,
  100. DWORD dwSourceAddr,
  101. DWORD dwSourceMask,
  102. PLIST_ENTRY pleSourceList
  103. );
  104. DWORD
  105. InvokeCreationAlertForList(
  106. PLIST_ENTRY pleForwardList,
  107. DWORD dwProtocolId,
  108. DWORD dwComponentId,
  109. DWORD dwIfIndex,
  110. DWORD dwIfNextHopAddr
  111. );
  112. //
  113. // Context passed to worker function WorkerFunctionInvokeCreationAlert
  114. //
  115. typedef struct _CREATION_ALERT_CONTEXT {
  116. //
  117. // Source(s) for the group that was joined
  118. //
  119. DWORD dwSourceAddr;
  120. DWORD dwSourceMask;
  121. //
  122. // Group(s) that were joined
  123. //
  124. DWORD dwGroupAddr;
  125. DWORD dwGroupMask;
  126. //
  127. // Interface on which joined. This is the interface
  128. // for which creation alerts have to issued
  129. //
  130. DWORD dwIfIndex;
  131. DWORD dwIfNextHopAddr;
  132. //
  133. // Protocol that performed the join
  134. //
  135. DWORD dwProtocolId;
  136. DWORD dwComponentId;
  137. BOOL bIGMP;
  138. //
  139. // for (*, G) entries, list of MFE(s) for G to be
  140. // updated
  141. //
  142. LIST_ENTRY leSourceList;
  143. } CREATION_ALERT_CONTEXT, *PCREATION_ALERT_CONTEXT;
  144. //
  145. // worker function required for invoking creation alert
  146. // to protocols from a worker thread
  147. //
  148. VOID
  149. WorkerFunctionInvokeCreationAlert(
  150. PVOID pvContext
  151. );
  152. #endif // _SCOPE_H_