示例#1
0
int main(void)
{
	struct prot msg, tmp;
	char bindata[256] =
			"\x01\x00\x00\x00"
			"\x24\x00\x00\x00"
			"\x01\x00\x00\x00"
			"\x4F\x00\x00\x00"
			"some string data in a binary message\x00\x00\x00\x00"
			"A\x00\x00\x00\x00\x00\x00\x00"
			"more zero-terminated string data in a binary message, the best of both worlds?!\x00\x00";
	char shens[256];
	packet_decode(&msg, bindata);
	packet_encode(shens, &msg, sizeof shens);
	packet_decode(&tmp, shens);
	dump(bindata, sizeof bindata);
	printf(
		"\nid=%u, str1len=%u, str2len=%u, str3len=%u\n"
		"str1=\"%s\", str2=\"%s\", str3=\"%s\"\n",
		msg.head->id, msg.head->str1len, msg.head->str2len, 
		msg.head->str3len, msg.str1, msg.str2, msg.str3);
	dump(shens, sizeof shens);
	printf(
		"\nid=%u, str1len=%u, str2len=%u, str3len=%u\n"
		"str1=\"%s\", str2=\"%s\", str3=\"%s\"\n",
		tmp.head->id, tmp.head->str1len, tmp.head->str2len, 
		tmp.head->str3len, tmp.str1, tmp.str2, tmp.str3);
	return 0;
}
示例#2
0
bool
do_simulation(config_t *config)
{
    netif_t                         netif;
    raw_packet_t                    raw_packet;
    packet_t                       *packet;
    uint32_t                        i;
    //uint32_t                        k;
    
    if (config->netif_size < 1 || config->netif[0].vlan_size < 1 || 
        !config->netif[0].vlan[0].ntp_configured || config->netif[0].vlan[0].ntp.client_size < 1) {
        LOG_PRINTLN(LOG_SIM, LOG_ERROR, ("No ARP config in configuration file! Abort"));
        return false;
    }
    
    if (!netif_init(&netif, config->netif[0].name)) {
        return false;
    }
    
    raw_packet_init(&raw_packet);
    
    LOG_PRINTLN(LOG_SIM, LOG_INFO, ("Create ARP request"));
    packet = create_arp_request(&netif,
                                config->netif[0].vlan[0].vid,
                                &(config->netif[0].vlan[0].ntp.client[0].mac_address),
                                &(config->netif[0].vlan[0].ntp.client[0].ipv4_address));
    
    LOG_PACKET(LOG_SIM, LOG_INFO, packet, ("TX packet"));
    
    /* encode */
    LOG_PRINTLN(LOG_SIM, LOG_INFO, ("Encode packet"));
    if (packet_encode(&netif, packet, &raw_packet)) {
        LOG_PRINTLN(LOG_SIM, LOG_INFO, ("Successfully encoded packet"));
    } else {
        LOG_PRINTLN(LOG_SIM, LOG_ERROR, ("Error encoding packet"));
        object_release(packet);
        return false;
    }
    for (i = 0; i < 0xff; i++) {
        raw_packet.data[raw_packet.len] = i;
        raw_packet.len++;
        LOG_RAW_PACKET(LOG_SIM, LOG_INFO, &raw_packet, ("TX raw"));
        
        /* send */
        netif_frame_send(&netif, &raw_packet);
        usleep(50000);
    }
    object_release(packet);
    
    return true;
}