Пример #1
0
static void sip_deserialize(struct proto_info *info_, uint8_t const **buf)
{
    struct sip_proto_info *info = DOWNCAST(info_, info, sip_proto_info);
    proto_info_deserialize(info_, buf);
    info->set_values = deserialize_2(buf);
    if (info->set_values & SIP_CMD_SET)
        info->cmd = deserialize_1(buf);
    if (info->set_values & SIP_FROM_SET)
        deserialize_str(buf, info->from, sizeof(info->from));
    if (info->set_values & SIP_TO_SET)
        deserialize_str(buf, info->to, sizeof(info->to));
    if (info->set_values & SIP_CALLID_SET)
        deserialize_str(buf, info->call_id, sizeof(info->call_id));
    if (info->set_values & SIP_MIME_SET)
        deserialize_str(buf, info->mime_type, sizeof(info->mime_type));
    if (info->set_values & SIP_VIA_SET) {
        info->via.protocol = deserialize_1(buf);
        ip_addr_deserialize(&info->via.addr, buf);
        info->via.port = deserialize_2(buf);
    }
    if (info->set_values & SIP_LENGTH_SET)
        info->content_length = deserialize_4(buf);
    if (info->set_values & SIP_CODE_SET)
        info->code = deserialize_4(buf);
    if (info->set_values & SIP_CSEQ_SET)
        info->cseq = deserialize_4(buf);
}
Пример #2
0
static void sdp_deserialize(struct proto_info *info_, uint8_t const **buf)
{
    struct sdp_proto_info *info = DOWNCAST(info_, info, sdp_proto_info);
    proto_info_deserialize(info_, buf);
    info->set_values = deserialize_1(buf);
    if (info->set_values & SDP_HOST_SET)
        ip_addr_deserialize(&info->host, buf);
    if (info->set_values & SDP_PORT_SET)
        info->port = deserialize_2(buf);
}
Пример #3
0
static void dhcp_deserialize(struct proto_info *info_, uint8_t const **buf)
{
    struct dhcp_proto_info *info = DOWNCAST(info_, info, dhcp_proto_info);
    proto_info_deserialize(info_, buf);
    unsigned u = deserialize_1(buf);
    info->hw_addr_is_eth = u & 1U;
    info->opcode = u >> 1U;
    info->set_values = deserialize_1(buf);
    if (info->set_values & DHCP_CLIENT_SET) ip_addr_deserialize(&info->client, buf);
    deserialize_n(buf, info->client_mac, sizeof(info->client_mac));
    deserialize_str(buf, info->server_name, sizeof(info->server_name));
}