166 lines
3.3 KiB
Protocol Buffer
166 lines
3.3 KiB
Protocol Buffer
syntax = "proto3";
|
||
|
||
// 基础公共类型定义
|
||
|
||
message SDLV4Info {
|
||
uint32 port = 1;
|
||
bytes v4 = 2;
|
||
uint32 nat_type = 3;
|
||
}
|
||
|
||
message SDLV6Info {
|
||
uint32 port = 1;
|
||
bytes v6 = 2;
|
||
}
|
||
|
||
// 所有需要建立请求和响应对应关系的,都是通过udp包头部4字节的packetId来对应
|
||
|
||
// 客户端层面通过token或者账号密码登录, 服务器端不管这个,
|
||
// 只是验证凭证是否合法 (access_token)
|
||
// 这里修改成了扁平的结构, 否则有些字段不好找放的位置
|
||
message SDLRegisterSuper {
|
||
uint32 pkt_id = 1;
|
||
string client_id = 2;
|
||
uint32 network_id = 3;
|
||
bytes mac = 4;
|
||
uint32 ip = 5;
|
||
uint32 mask_len = 6;
|
||
string hostname = 7;
|
||
string pub_key = 8;
|
||
string access_token = 9;
|
||
}
|
||
|
||
// 这里修改成了udp的方式,后续需要验证: session_token
|
||
message SDLRegisterSuperAck {
|
||
uint32 pkt_id = 1;
|
||
bytes aes_key = 2;
|
||
bytes session_token = 3;
|
||
}
|
||
|
||
// 注册失败时候的消息体
|
||
message SDLRegisterSuperNak {
|
||
uint32 pkt_id = 1;
|
||
uint32 error_code = 2;
|
||
string error_message = 3;
|
||
}
|
||
|
||
// 网络地址查询
|
||
message SDLQueryInfo {
|
||
uint32 pkt_id = 1;
|
||
uint32 network_id = 2;
|
||
bytes src_mac = 3;
|
||
bytes dst_mac = 4;
|
||
bytes session_token = 5;
|
||
}
|
||
|
||
message SDLPeerInfo {
|
||
uint32 pkt_id = 1;
|
||
uint32 network_id = 2;
|
||
bytes dst_mac = 3;
|
||
SDLV4Info v4_info = 4;
|
||
optional SDLV6Info v6_info = 5;
|
||
}
|
||
|
||
message SDLEmptyPeerInfo {
|
||
uint32 pkt_id = 1;
|
||
uint32 network_id = 2;
|
||
bytes dst_mac = 3;
|
||
}
|
||
|
||
// 事件定义, 下面的事件是服务器主动推送的,不需要响应
|
||
|
||
message SDLNatChangedEvent {
|
||
uint32 network_id = 1;
|
||
bytes mac = 2;
|
||
uint32 ip = 3;
|
||
}
|
||
|
||
// 被清理掉的Endpoints
|
||
message SDLDropMacsEvent {
|
||
uint32 network_id = 1;
|
||
repeated bytes macs = 2;
|
||
}
|
||
|
||
// 通知端上必须重新校验
|
||
message SDLRefreshAuthEvent {
|
||
uint32 network_id = 1;
|
||
}
|
||
|
||
message SDLSendRegisterEvent {
|
||
uint32 network_id = 1;
|
||
bytes dst_mac = 2;
|
||
uint32 nat_ip = 3;
|
||
uint32 nat_port = 4;
|
||
uint32 nat_type = 5;
|
||
optional SDLV6Info v6_info = 6;
|
||
}
|
||
|
||
message SDLNetworkShutdownEvent {
|
||
uint32 network_id = 1;
|
||
string message = 2;
|
||
}
|
||
|
||
// UDP通讯消息
|
||
message SDLStunRequest {
|
||
string client_id = 1;
|
||
uint32 network_id = 2;
|
||
bytes mac = 3;
|
||
uint32 ip = 4;
|
||
uint32 nat_type = 5;
|
||
optional SDLV6Info v6_info = 6;
|
||
bytes session_token = 7;
|
||
}
|
||
|
||
message SDLData {
|
||
uint32 network_id = 1;
|
||
bytes src_mac = 2;
|
||
bytes dst_mac = 3;
|
||
bool is_p2p = 4;
|
||
uint32 ttl = 5;
|
||
bytes data = 6;
|
||
bytes session_token = 7;
|
||
uint32 identity_id = 8;
|
||
}
|
||
|
||
// 这个是客户端之间的相互打洞的数据
|
||
|
||
message SDLRegister {
|
||
uint32 network_id = 1;
|
||
bytes src_mac = 2;
|
||
bytes dst_mac = 3;
|
||
}
|
||
|
||
message SDLRegisterAck {
|
||
uint32 network_id = 1;
|
||
bytes src_mac = 2;
|
||
bytes dst_mac = 3;
|
||
}
|
||
|
||
// 网络类型探测
|
||
|
||
message SDLStunProbe {
|
||
uint32 cookie = 1;
|
||
uint32 attr = 2;
|
||
uint32 step = 3;
|
||
}
|
||
|
||
message SDLStunProbeReply {
|
||
uint32 cookie = 1;
|
||
uint32 step = 2;
|
||
uint32 port = 3;
|
||
uint32 ip = 4;
|
||
}
|
||
|
||
// ARP查询相关
|
||
|
||
message SDLArpRequest {
|
||
uint32 network_id = 1;
|
||
uint32 target_ip = 2;
|
||
bytes session_token = 3;
|
||
}
|
||
|
||
message SDLArpResponse {
|
||
uint32 network_id = 1;
|
||
uint32 target_ip = 2;
|
||
bytes target_mac = 3;
|
||
} |