This handles setting up/closing down connections, voice packets, other steam management stuff.
Reading https://partner.steamgames.com/doc/api may be helpful.
The two primary functions of interest are
void GetSteamData_Packet(DLNRD::SteamSessionLight *SteamSessionLight, DLNRD::SteamSessionMemberLight *SteamSessionMemberLight, uint param_3,uint8_t *data, uint data_len) @141088020
and
SendSteamData_Packet1 @1410B3F58 SendSteamData_Packet2 @1410B58DC SendSteamData_Packet3 @1410B584C (the type is stored in the byte at data+6 at this point)
For sending SteamData packets, the send function must be queued as a task in the SteamSession. This is done by SteamSessionLight_Queue_SendSteamMessage @14109cfd0.
For steam callbacks, you want to get the callback functions from the DLNRD::SteamSurveillance class, created by Init_DLNRD::SteamSurveillance @14107b750, and it's accessed by a global pointer at 141da1ab0.
This list is a Work-In-Progress. Underlined types are fully understood. The functions which handle each type are labeled ``sendTypeXSteamMessage`` and ``readparseTypeXSteamMessage``
Prolog for all packets:
char magic[4] = "VRXN"; uint16_t header = 0x584; uint8_t type
(note this is converted to big endian before sending)
4. SessionPropertyReq
9. SyncSessionMemberRequest1
10. SyncSessionMemberRequest2
11. SendHostSearchResponse
12. P2PCommunicationResponse
13. OnAuthTicket
15. Response sent by guest to type 46 packet
24. SessionProperties
29. StartGame
30. CreateSessionVisibleTask
31. CreateSessionInvisibleTask
34. SyncSessionMemberResponse
35. SearchHostResponse
36. ReceiveRandomNumber
37. SyncSessionMemberRequest3
38. Response packet sent by host upon receiving type 15
42. NotifyLeavePlayer
46. KickOutTask