struct level2_entry { int foo; int bar; AST_LIST_ENTRY(level2_entry) list; }; AST_LIST_HEAD(level2_list, level2_entry); struct level1_entry { int baz; char *farble; level2_list level2; AST_LIST_ENTRY(level1_entry) list; }; AST_LIST_HEAD_STATIC(level1_list, level1_entry);