예제 #1
0
static int
init_suite(void)
{
    odp_pool_param_t pool_params;
    ofp_pkt_hook pkt_hook[OFP_HOOK_MAX];
    odp_instance_t instance;

    /* Init ODP before calling anything else */
    if (odp_init_global(&instance, NULL, NULL)) {
        OFP_ERR("Error: ODP global init failed.\n");
        return -1;
    }

    /* Init this thread */
    if (odp_init_local(instance, ODP_THREAD_CONTROL)) {
        OFP_ERR("Error: ODP local init failed.\n");
        return -1;
    }

    memset(pkt_hook, 0, sizeof(pkt_hook));

    pool_params.pkt.seg_len = SHM_PKT_POOL_BUFFER_SIZE;
    pool_params.pkt.len     = SHM_PKT_POOL_BUFFER_SIZE;
    pool_params.pkt.num     = SHM_PKT_POOL_SIZE / SHM_PKT_POOL_BUFFER_SIZE;
    pool_params.type        = ODP_POOL_PACKET;

    (void) ofp_init_pre_global("packet_pool", &pool_params,
                               pkt_hook, &ofp_packet_pool,
                               ARP_AGE_INTERVAL, ARP_ENTRY_TIMEOUT);

    ofp_arp_init_local();

    init_ifnet();

    ofp_arp_ipv4_insert(dst_ipaddr, dst_mac, dev);

    nexthop.gw = dst_ipaddr;
    nexthop.vlan = vlan;
    nexthop.port = port;

    return 0;
}
예제 #2
0
static int
init_suite(void)
{
	odp_pool_param_t pool_params;
	ofp_pkt_hook pkt_hook[OFP_HOOK_MAX];
	odp_pool_t pool;
	odp_instance_t instance;

	/* Init ODP before calling anything else */
	if (odp_init_global(&instance, NULL, NULL)) {
		OFP_ERR("Error: ODP global init failed.\n");
		return -1;
	}

	/* Init this thread */
	if (odp_init_local(instance, ODP_THREAD_CONTROL)) {
		OFP_ERR("Error: ODP local init failed.\n");
		return -1;
	}

	memset(pkt_hook, 0, sizeof(pkt_hook));
	pkt_hook[OFP_HOOK_OUT_IPv4] = fastpath_hook_out_IPv4;
#ifdef INET6
	pkt_hook[OFP_HOOK_OUT_IPv6] = fastpath_hook_out_IPv6;
#endif /* INET6 */

	pool_params.pkt.seg_len = SHM_PKT_POOL_BUFFER_SIZE;
	pool_params.pkt.len     = SHM_PKT_POOL_BUFFER_SIZE;
	pool_params.pkt.num     = SHM_PKT_POOL_NB_PKTS;
	pool_params.type        = ODP_POOL_PACKET;

	(void) ofp_init_pre_global(pool_name, &pool_params, pkt_hook, &pool,
				   ARP_AGE_INTERVAL, ARP_ENTRY_TIMEOUT);

	ofp_arp_init_local();

	init_ifnet();

	ofp_arp_ipv4_insert(tun_rem_ip, tun_rem_mac, dev);

	return 0;
}
예제 #3
0
static int
init_suite(void)
{
	ofp_global_param_t params;
	odp_instance_t instance;

	/* Init ODP before calling anything else */
	if (odp_init_global(&instance, NULL, NULL)) {
		OFP_ERR("Error: ODP global init failed.\n");
		return -1;
	}

	/* Init this thread */
	if (odp_init_local(instance, ODP_THREAD_CONTROL)) {
		OFP_ERR("Error: ODP local init failed.\n");
		return -1;
	}

	ofp_init_global_param(&params);
	params.enable_nl_thread = 0;
	memset(params.pkt_hook, 0, sizeof(params.pkt_hook));
	params.pkt_hook[OFP_HOOK_OUT_IPv4] = fastpath_hook_out_IPv4;
#ifdef INET6
	params.pkt_hook[OFP_HOOK_OUT_IPv6] = fastpath_hook_out_IPv6;
#endif /* INET6 */

	(void) ofp_init_global(instance, &params);

	ofp_init_local();

	init_ifnet();

	ofp_add_mac(dev, tun_rem_ip, tun_rem_mac);

	return 0;
}