Changeset View
Changeset View
Standalone View
Standalone View
tests/sys/netinet/libalias/perf.c
#include <stdio.h> | #include <stdio.h> | ||||
#include <stdlib.h> | #include <stdlib.h> | ||||
#include <strings.h> | #include <strings.h> | ||||
#include <sys/time.h> | #include <sys/time.h> | ||||
#include "util.h" | #include "util.h" | ||||
#include <alias.h> | #include <alias.h> | ||||
/* common ip ranges */ | |||||
static struct in_addr masq = { htonl(0x01020304) }; | |||||
static struct in_addr prv = { htonl(0x0a000000) }; | |||||
static struct in_addr ext = { htonl(0x12000000) }; | |||||
#define timevalcmp(tv, uv, cmp) \ | #define timevalcmp(tv, uv, cmp) \ | ||||
(((tv).tv_sec == (uv).tv_sec) \ | (((tv).tv_sec == (uv).tv_sec) \ | ||||
? ((tv).tv_usec cmp (uv).tv_usec) \ | ? ((tv).tv_usec cmp (uv).tv_usec) \ | ||||
: ((tv).tv_sec cmp (uv).tv_sec)) | : ((tv).tv_sec cmp (uv).tv_sec)) | ||||
#define timevaldiff(n, o) (float) \ | #define timevaldiff(n, o) (float) \ | ||||
(((n).tv_sec - (o).tv_sec)*1000000l + \ | (((n).tv_sec - (o).tv_sec)*1000000l + \ | ||||
((n).tv_usec - (o).tv_usec)) | ((n).tv_usec - (o).tv_usec)) | ||||
Show All 29 Lines | int main(int argc, char ** argv) | ||||
bzero(&nat, sizeof(nat)); | bzero(&nat, sizeof(nat)); | ||||
bzero(&unnat, sizeof(unnat)); | bzero(&unnat, sizeof(unnat)); | ||||
bzero(&random, sizeof(random)); | bzero(&random, sizeof(random)); | ||||
bzero(&attack, sizeof(attack)); | bzero(&attack, sizeof(attack)); | ||||
LibAliasSetAddress(la, masq); | LibAliasSetAddress(la, masq); | ||||
LibAliasSetMode(la, PKT_ALIAS_DENY_INCOMING, PKT_ALIAS_DENY_INCOMING); | LibAliasSetMode(la, PKT_ALIAS_DENY_INCOMING, PKT_ALIAS_DENY_INCOMING); | ||||
prv.s_addr &= htonl(0xffff0000); | prv1.s_addr &= htonl(0xffff0000); | ||||
ext.s_addr &= htonl(0xffff0000); | ext.s_addr &= htonl(0xffff0000); | ||||
p = ip_packet(prv, ext, 0, 64); | p = ip_packet(prv1, ext, 0, 64); | ||||
u = set_udp(p, 0, 0); | u = set_udp(p, 0, 0); | ||||
if (NULL == (batch = calloc(batch_size, sizeof(*batch)))) { | if (NULL == (batch = calloc(batch_size, sizeof(*batch)))) { | ||||
perror("calloc(batch)"); | perror("calloc(batch)"); | ||||
return -1; | return -1; | ||||
} | } | ||||
gettimeofday(&timeout, NULL); | gettimeofday(&timeout, NULL); | ||||
timeout.tv_sec += max_seconds; | timeout.tv_sec += max_seconds; | ||||
printf("RND SECND NAT RND ATT UNA\n"); | printf("RND SECND NAT RND ATT UNA\n"); | ||||
for (round = 0; ; round++) { | for (round = 0; ; round++) { | ||||
int i, res; | int i, res; | ||||
struct timeval now, start; | struct timeval now, start; | ||||
printf("%3d ", round+1); | printf("%3d ", round+1); | ||||
gettimeofday(&start, NULL); | gettimeofday(&start, NULL); | ||||
printf("%5.1f ", max_seconds - timevaldiff(timeout, start)/1000000.0f); | printf("%5.1f ", max_seconds - timevaldiff(timeout, start)/1000000.0f); | ||||
for (cnt = i = 0; i < batch_size; i++, cnt++) { | for (cnt = i = 0; i < batch_size; i++, cnt++) { | ||||
batch[i].src.s_addr = prv.s_addr | htonl(rand_range(0, 0xffff)); | batch[i].src.s_addr = prv1.s_addr | htonl(rand_range(0, 0xffff)); | ||||
batch[i].dst.s_addr = ext.s_addr | htonl(rand_range(0, 0xffff)); | batch[i].dst.s_addr = ext.s_addr | htonl(rand_range(0, 0xffff)); | ||||
batch[i].sport = rand_range(1000, 60000); | batch[i].sport = rand_range(1000, 60000); | ||||
batch[i].dport = rand_range(1000, 60000); | batch[i].dport = rand_range(1000, 60000); | ||||
p->ip_src = batch[i].src; | p->ip_src = batch[i].src; | ||||
p->ip_dst = batch[i].dst; | p->ip_dst = batch[i].dst; | ||||
u = set_udp(p, batch[i].sport, batch[i].dport); | u = set_udp(p, batch[i].sport, batch[i].dport); | ||||
▲ Show 20 Lines • Show All 108 Lines • Show Last 20 Lines |