Ejemplo n.º 1
0
void test_join_shared_()
{
	{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED, 	64, 1024, 1024);
	pfq_t * y = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED,   64, 1024, 1024);

	int gid = pfq_group_id(q);

	assert( pfq_join_group(y, gid, Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED) >= 0);

	pfq_close(q);
	pfq_close(y);
	}

	{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED, 64, 1024, 1024);
	pfq_t * y = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED, 64, 1024, 1024);

	int gid = pfq_group_id(q);

	assert( pfq_join_group(y, gid, Q_CLASS_DEFAULT, Q_POLICY_GROUP_PRIVATE) < 0);
	assert( pfq_join_group(y, gid, Q_CLASS_DEFAULT, Q_POLICY_GROUP_RESTRICTED) < 0);
	assert( pfq_join_group(y, gid, Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED) < 0);

	pfq_close(q);
	pfq_close(y);
	}
}
Ejemplo n.º 2
0
void test_join_restricted_process()
{
	pfq_t * x = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_RESTRICTED, 64, 1024, 1024);
	pfq_t * z = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED, 64, 1024, 1024);

	assert(x);
	assert(z);

	int p = fork();
	if (p == 0) {
		pfq_t * y = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED, 64, 1024, 1024);

		int gid = pfq_group_id(z);
		assert( pfq_join_group(y, gid, Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED) == gid);
		assert( pfq_join_group(y, pfq_group_id(x), Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED) == -1);

		pfq_close(y);

		_Exit(1);
	}

	wait(NULL);

	pfq_close(x);
	pfq_close(z);
}
Ejemplo n.º 3
0
void test_join_restricted()
{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_RESTRICTED, 64, 1024, 1024);
        assert(q);

	pfq_t * y = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED, 64, 1024, 1024);

	int gid = pfq_group_id(q);
	assert( pfq_join_group(y, gid, Q_CLASS_DEFAULT, Q_POLICY_GROUP_RESTRICTED) == gid);

	pfq_close(q);
	pfq_close(y);
}
Ejemplo n.º 4
0
void test_ifindex()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);
	assert(pfq_ifindex(q, "lo") != -1);
	pfq_close(q);
}
Ejemplo n.º 5
0
void test_rx_slot_size()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);
        size_t size = sizeof(struct pfq_pkthdr) + 64; /* ALIGN(1514, 8) */
	assert(pfq_get_rx_slot_size(q) == size);
	pfq_close(q);
}
Ejemplo n.º 6
0
void test_egress_unbind()
{
        pfq_t * q = pfq_open(64, 1024, 1024);

        assert(pfq_egress_unbind(q) == 0);

        pfq_close(q);
}
Ejemplo n.º 7
0
void test_egress_bind()
{
        pfq_t * q = pfq_open(64, 1024, 1024);

        assert(pfq_egress_bind(q, "lo", -1) == 0);
        assert(pfq_egress_bind(q, "unknown", -1) == -1);

        pfq_close(q);
}
Ejemplo n.º 8
0
void test_bind_tx()
{
        pfq_t * q = pfq_open(64, 1024, 1024);

        assert(pfq_bind_tx(q, "lo", Q_ANY_QUEUE, Q_NO_KTHREAD) == 0);
        assert(pfq_bind_tx(q, "unknown", Q_ANY_QUEUE, Q_NO_KTHREAD) == -1);

        pfq_close(q);
}
Ejemplo n.º 9
0
void test_maxlen()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	assert(pfq_get_maxlen(q) == 1514);

	pfq_close(q);
}
Ejemplo n.º 10
0
void test_tx_thread()
{
        pfq_t * q = pfq_open(64, 1024, 1024);

        assert(pfq_bind_tx(q, "lo", Q_ANY_QUEUE, 0) == 0);
        assert(pfq_enable(q) == 0);

        pfq_close(q);
}
Ejemplo n.º 11
0
void test_poll()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	assert(pfq_poll(q, 0) == 0);

	pfq_close(q);
}
Ejemplo n.º 12
0
void test_bind_device()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	assert(pfq_bind(q, "unknown", Q_ANY_QUEUE) == -1);
	assert(pfq_bind(q, "eth0", Q_ANY_QUEUE) == 0);
	assert(pfq_bind_group(q, 11, "eth0", Q_ANY_QUEUE) == -1);

	pfq_close(q);
}
Ejemplo n.º 13
0
void test_groups_mask()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	unsigned long groups;
	assert(pfq_groups_mask(q, &groups) == 0);

	assert(groups > 0);

	pfq_close(q);
}
Ejemplo n.º 14
0
void test_tx_queue()
{
        pfq_t * q = pfq_open(64, 1024, 1024);
        assert(pfq_tx_queue(q, 1) == -1);

        assert(pfq_bind_tx(q, "lo", Q_ANY_QUEUE, Q_NO_KTHREAD) == 0);
        assert(pfq_enable(q) == 0);

        assert(pfq_tx_queue(q, 0) == 0);

        pfq_close(q);
}
Ejemplo n.º 15
0
void *restricted_thread(void *arg)
{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED, 64, 1024, 1024);
        assert(q);

	long int gid = (long int)arg;
	long int ngid = pfq_join_group(q, gid, Q_CLASS_DEFAULT, Q_POLICY_GROUP_RESTRICTED);

	assert(ngid == gid);

	pfq_close(q);
	return 0;
}
Ejemplo n.º 16
0
void test_is_enabled()
{
	pfq_t * q = pfq_open(64, 1024, 1024);

	assert(q);
	assert(pfq_is_enabled(q) == 0);
	assert(pfq_enable(q) == 0);
	assert(pfq_is_enabled(q) == 1);
	assert(pfq_disable(q) == 0);
	assert(pfq_is_enabled(q) == 0);

	pfq_close(q);
}
Ejemplo n.º 17
0
void test_timestamp()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	assert(pfq_is_timestamping_enabled(q) == 0);
	assert(pfq_timestamping_enable(q, 1) == 0);
	assert(pfq_is_timestamping_enabled(q) == 1);
	assert(pfq_timestamping_enable(q, 0) == 0);
	assert(pfq_is_timestamping_enabled(q) == 0);

	pfq_close(q);
}
Ejemplo n.º 18
0
void test_enable_disable()
{
	pfq_t * q = pfq_open(64, 1024, 1024);

	assert(q);
	assert(pfq_mem_addr(q) == NULL);
	assert(pfq_enable(q) == 0);
	assert(pfq_mem_addr(q) != NULL);
	assert(pfq_disable(q) == 0);
	assert(pfq_mem_addr(q) == NULL);

	pfq_close(q);
}
Ejemplo n.º 19
0
void test_read()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	struct pfq_net_queue nq;
        assert(pfq_read(q, &nq, 10) == -1);

	assert(pfq_enable(q) == 0);

        assert(pfq_read(q, &nq, 10) == 0);

	pfq_close(q);
}
Ejemplo n.º 20
0
void test_stats()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	struct pfq_stats s;
	assert(pfq_get_stats(q, &s) == 0);

	assert(s.recv == 0);
	assert(s.lost == 0);
	assert(s.drop == 0);

	pfq_close(q);
}
Ejemplo n.º 21
0
void test_join_restricted_thread()
{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_RESTRICTED, 64, 1024, 1024);
        assert(q);

	pthread_t t;

	long int gid = pfq_group_id(q);

	assert(pthread_create(&t, NULL, restricted_thread, (void *)gid) == 0);

        pthread_join(t, NULL);

	pfq_close(q);
}
Ejemplo n.º 22
0
void test_rx_slots()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	assert(pfq_get_rx_slots(q) == 1024);

	assert(pfq_enable(q) == 0);
	assert(pfq_set_rx_slots(q, 4096) == -1);
	assert(pfq_disable(q) == 0);

	assert(pfq_set_rx_slots(q, 4096) == 0);
	assert(pfq_get_rx_slots(q) == 4096);

	pfq_close(q);
}
Ejemplo n.º 23
0
void test_my_group_stats_shared()
{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED, 64, 1024, 1024);
        assert(q);

	int gid = pfq_group_id(q);
	assert(gid != -1);

	struct pfq_stats s;
	assert(pfq_get_group_stats(q, gid, &s) == 0);

	assert(s.recv == 0);
	assert(s.lost == 0);
	assert(s.drop == 0);

	pfq_close(q);
}
Ejemplo n.º 24
0
void test_join_deferred()
{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED, 64, 1024, 1024);
        assert(q);

	assert(pfq_join_group(q, 13, Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED) == 13);
	assert(pfq_join_group(q, 13, Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED) == 13);

	unsigned long mask;

	assert(pfq_groups_mask(q, &mask) == 0);

	assert(mask != 0);
	assert(mask == (1<<13));

	pfq_close(q);
}
Ejemplo n.º 25
0
void test_join_group()
{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED, 64, 1024, 1024);
	assert(q);

	int gid = pfq_join_group(q, 0, Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED);
	assert(gid == 0);

	gid = pfq_join_group(q, Q_ANY_GROUP, Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED);
	assert(gid == 1);

	unsigned long mask;
	assert(pfq_groups_mask(q, &mask) == 0);

	assert(mask == 3);
	pfq_close(q);
}
Ejemplo n.º 26
0
void test_leave_group()
{
	pfq_t * q = pfq_open_group(Q_CLASS_DEFAULT, Q_POLICY_GROUP_UNDEFINED, 64, 1024, 1024);
	assert(q);

	int gid = pfq_join_group(q, 22, Q_CLASS_DEFAULT, Q_POLICY_GROUP_SHARED);
	assert(gid == 22);

	assert(pfq_leave_group(q, 22) == 0);
	assert(pfq_group_id(q) == -1);

	unsigned long mask;
	assert(pfq_groups_mask(q, &mask) == 0);
	assert(mask == 0);

	pfq_close(q);
}
Ejemplo n.º 27
0
void test_group_stats()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	struct pfq_stats s;
	assert(pfq_get_group_stats(q, 11, &s) == -1);

	assert(pfq_join_group(q, 11, Q_CLASS_DEFAULT, Q_POLICY_GROUP_RESTRICTED) == 11);

	assert(pfq_get_group_stats(q, 11, &s) == 0);

	assert(s.recv == 0);
	assert(s.lost == 0);
	assert(s.drop == 0);

	pfq_close(q);
}
Ejemplo n.º 28
0
void test_caplen()
{
	pfq_t * q = pfq_open(64, 1024, 1024);
        assert(q);

	assert(pfq_get_caplen(q) == 64);
	assert(pfq_set_caplen(q, 128) == 0);
	assert(pfq_get_caplen(q) == 128);

	assert(pfq_enable(q) == 0);
	assert(pfq_set_caplen(q, 10) == -1);
	assert(pfq_disable(q) == 0);

	assert(pfq_set_caplen(q, 64) == 0);
	assert(pfq_get_caplen(q) == 64);

	pfq_close(q);
}
Ejemplo n.º 29
0
int
main(int argc, char *argv[])
{
        if (argc < 5)
        {
                fprintf(stderr, "usage: %s dev queue kthread num\n", argv[0]);
                return -1;
        }

        const char *dev = argv[1];
        int queue  = atoi(argv[2]);
        int kthread = atoi(argv[3]);
        unsigned long long num = atoll(argv[4]);

        pfq_t * q= pfq_open(64, 1024, 1024);

        if (pfq_bind_tx(q, dev, queue, kthread) < 0) {
		fprintf(stderr, "%s\n", pfq_error(q));
		return -1;
	}

        pfq_enable(q);

	if (kthread == -1) {
		send_packets(q, num);
	}
	else  {
		send_packets_async(q, num);
	}

        sleep(2);

        struct pfq_stats stat;
        pfq_get_stats(q, &stat);

        fprintf(stdout, "sent: %lu - disc: %lu\n", stat.sent, stat.disc);

        pfq_close(q);

        return 0;
}
Ejemplo n.º 30
0
void test_group_context()
{
        /* TODO */
#if 0
        pfq_t * q = pfq_open(64, 0, 1024, 1024);

        struct pfq_meta_prog * prg  = (struct pfq_meta_prog *) (malloc(sizeof(int) + sizeof(pfq_fun_t) * 1));

        prg->size = 1;

        int n = 22;

        prg->fun[0].symbol = "id";
        prg->fun[0].context.addr = &n;
        prg->fun[0].context.size = sizeof(n);

        assert(pfq_set_group_program(q, pfq_group_id(q), prg) == 0);

	pfq_close(q);
#endif
}