Message header:Data Bytes MeaningFOB1 4 version4 checksum4 flattened size4 'what'1 flagsData field:Data Bytes Meaning1 flags4 type// Mini data (all data less than 256 bytes total)1 item count (*if* there is more than one)1 data length// Maxi data (all data more than 255 bytes total)4 item count (*if* there is more than one)4 data length1 name lengthX name// Single item4 item size (*if* this is a variable sized item)Y item data - NULL padded to 8-byte boundary// Multiple items4 item size (*if* this is a variable sized item)Y item data - NULL padded to 8-byte boundary//------------------------------------------------------------------------------// An example//------------------------------------------------------------------------------// PrintToStream()Data Bytes Meaning//BMessage: what = (0x0, or 0)FOB1 4 version0x90010001 4 checksum0x00000192 4 flattened size (402 bytes)0x0 4 'what' (none specified)0x01 1 flags// entry ATTRIBUTE_MENU, type='LONG', c=5, size= 4,0x07 1 flagsLONG 4 type0x05 1 item count0x14 1 data length0x0e 1 name lengthATTRIBUTE_ 14 name (ATTRIBUTE_MENU)// data[0]: 0x8 (8, '')0x8 4 data[0]// data[1]: 0x8 (8, '')0x8 4 data[1]// data[2]: 0x6 (6, '')0x6 4 data[2]// data[3]: 0x8 (8, '')0x8 4 data[3]// data[4]: 0x6 (6, '')0x6 4 data[4]// entry CRITERIA_MENU, type='LONG', c=5, size= 4,0x07 1 flagsLONG 4 type0x05 1 item count0x14 1 data length0x0d 1 name lengthCRITERIA_ 13 name (CRITERIA_MENU)// data[0]: 0x0 (0, '')0x0 4 data[0]// data[1]: 0x0 (0, '')0x0 4 data[1]// data[2]: 0x0 (0, '')0x0 4 data[2]// data[3]: 0x0 (0, '')0x0 4 data[3]// data[4]: 0x0 (0, '')0x0 4 data[4]// entry VALUE, type='CSTR', c=5,0x03 1 flagsCSTR 4 type0x5 1 item count0x90 1 data length0x5 1 name lengthVALUE 5 name (VALUE)// size=18, data[0]: "listar@freelists."0x12 4 item sizelistar@fre 18 data[0]2 padding to 8-byte boundary// size=27, data[1]: "freelists-users@freelists."0x1b 4 item sizefreelists@ 27 data[1]1 padding to 8-byte boundary// size=27, data[2]: "freelists-users@freelists."0x1b 4 item sizefreelists@ 27 data[2]1 padding to 8-byte boundary// size=19, data[3]: "ecartis@freelists."0x13 4 item sizeecartis@fr 19 data[3]1 padding to 8-byte boundary// size=26, data[4]: "freelists-news@freelists."0x1a 4 item sizefreelists@ 26 data[4]2 padding to 8-byte boundary// entry AND_OR_MENU, type='LONG', c=5, size= 4,0x07 1 flagsLONG 4 type0x5 1 item count0x14 1 data length0x0b 1 name lengthAND_OR_MEN 11 name (AND_OR_MENU)// data[0]: 0x1 (1, '')0x1 4 data[0]// data[1]: 0x1 (1, '')0x1 4 data[1]// data[2]: 0x1 (1, '')0x1 4 data[2]// data[3]: 0x1 (1, '')0x1 4 data[3]// data[4]: 0x0 (0, '')0x0 4 data[4]// entry COUNT, type='LONG', c=1, size= 4, data[0]: 0x5 (5, '')0x0f 1 flagsLONG 4 type0x4 1 data length0x5 1 name lengthCOUNT 5 name (COUNT)0x5 4 data// entry ACTION_MENU, type='LONG', c=1, size= 4, data[0]: 0x2 (2, '')0x0f 1 flagsLONG 4 type0x4 1 data length0x0b 1 name lengthACTION_MEN 11 name (ACTION_MENU)0x2 4 data// entry ACTION_VALUE, type='CSTR', c=1, size=42, data[0]: "/boot/home/mail/Erik's Mail/freelists.org"0x0b 1 flagsCSTR 4 type0x30 1 data length0x0c 1 name lengthACTION_VAL 12 name (ACTION_VALUE)0x2a 4 item size/boot/home 42 data2 padding to 8-byte boundary//------------------------------------------------------------------------------// An old exampleData Bytes Meaning1BOF(ascii) 4 version?? 4 ??0x76 4 flattened sizeDPUQ 4 what(B_QUERY_UPDATE)?? 1 ??0F 1 flags (including fixed chunk size)GNOL 4 type04 1 chunk size06 1 name lengthopcode 6 name1 4 data(B_ENTRY_CREATED)0F 1 flags (including fixed chunk size)GNOL 4 type04 1 chunk size06 1 name lengthdevice 6 name4 4 data0F 1 flags (including fixed chunk size)GNLL 4 type08 1 chunk size09 1 name lengthdirectory 9 name524992 8 data0F 1 flags (including fixed chunk size)GNLL 4 type08 1 chunk size04 1 name lengthnode 4 name524295 8 data0B 1 flags (including variable chunk size)RTSC 4 type08 1 chunk size04 1 name lengthname 4 name08 1 chunk size?8 padded string?