1 #pragma once
2 
3 #define TIPASTE(x,y) x ## y
4 
5 #define IF_LIST_ITER(n) \
6     PLIST_ENTRY TIPASTE(n,Entry); \
7     PIP_INTERFACE n;
8 
9 #define ForEachInterface(n) \
10     TIPASTE(n,Entry) = InterfaceListHead.Flink; \
11     while (TIPASTE(n,Entry) != &InterfaceListHead) { \
12               TI_DbgPrint \
13                   (MAX_TRACE,( # n ": %x\n", \
14                                TIPASTE(n,Entry))); \
15               ASSERT(TIPASTE(n,Entry)); \
16 	      n = CONTAINING_RECORD(TIPASTE(n,Entry), IP_INTERFACE, \
17 				    ListEntry); \
18 	      ASSERT(n);
19 
20 #define EndFor(n) \
21      TI_DbgPrint(MAX_TRACE,("Next " # n " %x\n",  \
22 			    TIPASTE(n,Entry->Flink))); \
23      TIPASTE(n,Entry) = TIPASTE(n,Entry)->Flink; \
24 }
25