Exemplo n.º 1
0
void
ccnl_simu_init_node(char node, const char *addr,
                    int max_cache_entries, int mtu)
{
    struct ccnl_relay_s *relay = char2relay(node);
    struct ccnl_if_s *i;

    DEBUGMSG(TRACE, "ccnl_simu_init_node\n");

    relay->id = relay - relays;
    relay->max_cache_entries = node == 'C' ? -1 : max_cache_entries;

    // add (fake) eth0 interface with index 0:
    i = &relay->ifs[0];
    i->addr.eth.sll_family = AF_PACKET;
    memcpy(i->addr.eth.sll_addr, addr, ETH_ALEN);
    if (mtu)
        i->mtu = mtu;
    else
        i->mtu = 4096;
    i->reflect = 1;
    i->fwdalli = 1;
    relay->ifcount++;

#ifdef USE_SCHEDULER
    i->sched = ccnl_sched_pktrate_new(ccnl_interface_CTS, relay,
                                      inter_packet_interval);
    relay->defaultFaceScheduler = ccnl_simu_defaultFaceScheduler;
#endif

    if (node == 'A' || node == 'B') {

        struct ccnl_client_s *client = ccnl_calloc(1,
                                           sizeof(struct ccnl_client_s));
        client->lastseq = SIMU_NUMBER_OF_CHUNKS-1;
        client->last_received = -1;
        client->name = node == 'A' ?
            "/ccnl/simu/movie1" : "/ccnl/simu/movie2";
        relay->aux = (void *) client;
    }

    ccnl_set_timer(1000000, ccnl_ageing, relay, 0);
}
Exemplo n.º 2
0
struct ccnl_sched_s*
ccnl_simu_defaultFaceScheduler(struct ccnl_relay_s *ccnl,
                                    void(*cb)(void*,void*))
{
    return ccnl_sched_pktrate_new(cb, ccnl, inter_ccn_interval);
}