Common Constructs - These constructs are used in several areas of the AV session messages. I. Default Interface Name Notes: * In practice this has been seen to be one of 2 values: "external" - For normal IP connections (including NAT) string rep of IP address - For PPP connections (PPPoE or VPN) Interface Name Format: # Meaning Example 16 Default Interface Name 65 78 74 65 72 6e 61 6c 00 00 00 00 00 00 00 00 II. Host Blocks - One or more blocks describing sender's IP interfaces Notes: * All active interfaces are included. (Including VPN nets) * Starts with external (post-NAT) address information of default i/f * If there is an internal (pre-NAT) address it follows the external one * The internal address has the i/f name with '~' after it * Machines on AirPort networks contain fake addresses with a Class E address * Used in TLV 2711 for Accept/Decline/Timeout Messages * Used in TLV 2774 for Invitation Message * The AV Session Cookie is the same for all blocks sent Host Block Format: # Meaning Example 16 IPv6 address - IPv4 1st 4 octets 18 02 5b 28 00 00 00 00 00 00 00 00 00 00 00 00 8 IPv6 Port # - IPv4 1st 2 octets 13 c4 00 00 00 00 00 00 5 Interface Name String ("en0") 65 6e 30 00 00 11 AV Session Cookie 20 20 42 00 02 b1 2c 00 b6 55 40 III. Bitmask IP Address Notes: * Not sure exactly what this is used for * Algorithm - Take bitwise inverse of each nonzero octet in primary address - For 00 octets in primary address, keep a zero for the bitmask Bitmask IP Address # Meaning Example 16 Inverse Bitmask f5 ff fe fb 00 00 00 00 00 00 00 00 00 00 00 00 Individual Messages I. AV Invitation Message After standard channel 2 ICBM header for command 4 subcommand 6 # Meaning Example var TLV 0x0005 = ... 00 05 00 ?? 2 NULL Padding 00 00 8 Packet Cookie 34 30 32 36 30 30 33 00 16 AV Capability Flag 09 46 f0 04 4c 7f 11 d1 82 22 44 45 53 54 00 00 6 TLV 0x000a = 0x0001 00 0a 00 02 00 01 4 TLV 0x000f = nil 00 0f 00 00 8 TLV 0x0003 = main ip 00 03 00 04 18 02 5b 28 6 TLV 0x2774 = 0x0001 27 74 00 02 00 01 var TLV 0x2711 = ... 27 11 00 ?? 2 Type = 0x0001 00 02 2 Subtype = 0=video 1=audio 00 00 2 Flag = nil 00 00 2 primary ext port 13 c4 var ascii rep of primary ext addr 32 34 2e 32 2e 39 31 2e 34 30 var TLV 0x2775 = ... 27 75 00 ?? 4 NULL Padding 00 00 00 00 16 Default Interface Name *See Common Constructs section 40 Host Block (Repeated as needed) *See Common Constructs section 16 Bitmask IP Address *See Common Constructs section 2 Outgoing Port Number 13 c4 2 NULL Padding 00 00 II. Decline Invitation Message After standard channel 2 ICBM header for command 4 subcommand 6 # Meaning Example var TLV 0x0005 = ... 00 05 00 ?? 2 NULL Padding 00 00 8 Packet Cookie 34 30 32 36 30 30 33 00 16 AV Capability Flag 09 46 f0 04 4c 7f 11 d1 82 22 44 45 53 54 00 00 6 TLV 0x000a = 0x0001 00 0a 00 02 00 01 4 TLV 0x000f = nil 00 0f 00 00 8 TLV 0x0003 = main ip 00 03 00 04 18 02 5b 28 6 TLV 0x2774 = 0x0001 27 74 00 02 00 01 var TLV 0x2711 = ... 27 11 00 ?? 2 Type = 0x0002 00 02 2 Subtype = 0x0001 00 01 2 Flag = nil 00 00 6 NULL Padding 00 00 00 00 00 00 5 default i/f name ("en0") 65 6e 30 00 00 11 AV Session Cookie bc 83 b0 00 00 00 00 00 99 e2 a0 16 IPv6 address - IPv4 1st 4 bytes 18 02 5b 28 00 00 00 00 00 00 00 00 00 00 00 00 8 IPv6 Port # - IPv4 1st 2 bytes 13 c4 00 00 00 00 00 00 16 Default Interface Name *See Common Constructs section 40 Host Block (backup i/f) *See Common Constructs section 16 Bitmask IP Address *See Common Constructs section 2 Outgoing Port Number 13 c4 2 NULL Padding 00 00 4 TLV 0x2775 = nil 27 75 00 00 III. Accept Invitation Message * Same as Decline except the Subtype of TLV 2711 = 0x0000 After standard channel 2 ICBM header for command 4 subcommand 6 # Meaning Example var TLV 0x0005 = ... 00 05 00 ?? 2 NULL Padding 00 00 8 Packet Cookie 34 30 32 36 30 30 33 00 16 AV Capability Flag 09 46 f0 04 4c 7f 11 d1 82 22 44 45 53 54 00 00 6 TLV 0x000a = 0x0001 00 0a 00 02 00 01 4 TLV 0x000f = nil 00 0f 00 00 8 TLV 0x0003 = main ip 00 03 00 04 18 02 5b 28 6 TLV 0x2774 = 0x0001 27 74 00 02 00 01 var TLV 0x2711 = ... 27 11 00 ?? 2 Type = 0x0002 00 02 2 Subtype = 0x0000 00 00 2 Flag = nil 00 00 6 NULL Padding 00 00 00 00 00 00 5 default i/f name ("en0") 65 6e 30 00 00 11 AV Session Cookie bc 83 b0 00 00 00 00 00 99 e2 a0 16 IPv6 address - IPv4 1st 4 bytes 18 02 5b 28 00 00 00 00 00 00 00 00 00 00 00 00 8 IPv6 Port # - IPv4 1st 2 bytes 13 c4 00 00 00 00 00 00 16 Default Interface Name *See Common Constructs section 40 Host Block (backup i/f) *See Common Constructs section 16 Bitmask IP Address *See Common Constructs section 2 Outgoing Port Number 13 c4 2 NULL Padding 00 00 4 TLV 0x2775 = nil 27 75 00 00 IV. Cancel Invitation Message After standard channel 2 ICBM header for command 4 subcommand 6 # Meaning Example 70 TLV 0x0005 = ... 00 05 00 42 2 NULL Padding 00 00 8 Packet Cookie 34 30 32 36 30 30 33 00 16 AV Capability Flag 09 46 f0 04 4c 7f 11 d1 82 22 44 45 53 54 00 00 6 TLV 0x000a = 0x0001 00 0a 00 02 00 01 4 TLV 0x000f = nil 00 0f 00 00 8 TLV 0x0003 = main ip 00 03 00 04 18 02 5b 28 6 TLV 0x2774 = 0x0001 27 74 00 02 00 01 12 TLV 0x2711 = ... 27 11 00 08 2 Type = 0x0004 00 04 2 Subtype = 0x0000 00 00 2 Flag = nil 00 00 2 NULL Padding 00 00 4 TLV 0x2775 = nil 27 75 00 00 V. Session Startup Timeout Message After standard channel 2 ICBM header for command 4 subcommand 6 # Meaning Example var TLV 0x0005 = ... 00 05 00 ?? 2 NULL Padding 00 00 8 Packet Cookie 34 30 32 36 30 30 33 00 16 AV Capability Flag 09 46 f0 04 4c 7f 11 d1 82 22 44 45 53 54 00 00 6 TLV 0x000a = 0x0001 00 0a 00 02 00 01 4 TLV 0x000f = nil 00 0f 00 00 8 TLV 0x0003 = main ip 00 03 00 04 18 02 5b 28 6 TLV 0x2774 = 0x0001 27 74 00 02 00 01 var TLV 0x2711 = ... 27 11 00 ?? 2 Type = 0x0005 00 05 2 Subtype = 0x0000 00 00 2 Flag = nil 00 00 6 NULL Padding 00 00 00 00 00 00 16 Default Interface Name *See Common Constructs section 40 Host Block (Repeat as needed) *See Common Constructs section 16 Bitmask IP Address *See Common Constructs section 2 Outgoing Port Number 13 c4 2 NULL Padding 00 00 4 TLV 0x2775 = nil 27 75 00 00