示例#1
0
文件: eth.c 项目: bsmr-c-cpp/junkie
static void eth_deserialize(struct proto_info *info_, uint8_t const **buf)
{
    struct eth_proto_info *info = DOWNCAST(info_, info, eth_proto_info);
    proto_info_deserialize(info_, buf);
    info->vlan_id = deserialize_3(buf);
    if (info->vlan_id == 0xffffff) info->vlan_id = -1;
    deserialize_n(buf, info->addr[0], ETH_ADDR_LEN);
    deserialize_n(buf, info->addr[1], ETH_ADDR_LEN);
    info->protocol = deserialize_2(buf);
}
示例#2
0
文件: dhcp.c 项目: bonnefoa/junkie
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));
}
示例#3
0
文件: ip_addr.c 项目: k8king/junkie
void ip_addr_deserialize(struct ip_addr *addr, uint8_t const **buf)
{
    unsigned version = deserialize_1(buf);
    if (version == 4) {
        addr->family = AF_INET;
        addr->u.v4.s_addr = deserialize_4(buf);
    } else if (version == 6) {
        addr->family = AF_INET6;
        deserialize_n(buf, &addr->u.v6, sizeof(addr->u.v6));
    } else {
        SLOG(LOG_ERR, "Cannot deserialize ip_addr of version %u", version);
        addr->family = AF_INET; // run forest, run!
        addr->u.v4.s_addr = 0U;
    }
}