Network Protocol/HANDSHAKE
Jump to navigation
Jump to search
This pages is related to MKWii Network Protocol and describes the record type NATNEG in GNU C notation.
This record NATNEG is the same as the NAT negotiation with the servers - but only describes the packet "CONNECT_PING" which is sent peer-to-peer.
typedef struct udp_connect_t { /*00*/ u8[6] natneg_magic; // always 0xfdfc1e666ab2 (be) /*06*/ u8 version; // always 0x03 /*07*/ u8 type; // type of data: 0x05: CONNECT // 0x07: CONNECT_PING /*08*/ u32 client_id; // client ID. Last two bytes of ID are last two bytes of Friendcode /*0c*/ u32 ip4; // IP4 of client /*10*/ u16 port; // UDP port of client /*12*/ u8 counter; // CONNECT_PING: sequence counter: 0|1 // CONNECT: x42 /*13*/ u8 error; // 0x00: no error, 0x01: client timeout, 0x02: INIT timeout /*14*/ } __attribute__ ((packed)) udp_connect_t;