[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[GNUnet-SVN] r30419 - gnunet/src/tun
From: |
gnunet |
Subject: |
[GNUnet-SVN] r30419 - gnunet/src/tun |
Date: |
Sat, 26 Oct 2013 16:57:24 +0200 |
Author: grothoff
Date: 2013-10-26 16:57:24 +0200 (Sat, 26 Oct 2013)
New Revision: 30419
Modified:
gnunet/src/tun/regex.c
gnunet/src/tun/test_regex.c
Log:
-faster port range generation, O(n) instead of O(n^2)
Modified: gnunet/src/tun/regex.c
===================================================================
--- gnunet/src/tun/regex.c 2013-10-26 14:34:39 UTC (rev 30418)
+++ gnunet/src/tun/regex.c 2013-10-26 14:57:24 UTC (rev 30419)
@@ -186,8 +186,9 @@
{
char *reg;
char *ret;
- char *tmp;
+ char *pos;
unsigned int i;
+ unsigned int cnt;
if ( (0 == pp->start_port) ||
( (1 == pp->start_port) &&
@@ -202,27 +203,31 @@
pp->start_port);
return ret;
}
- reg = NULL;
+ cnt = pp->end_port - pp->start_port + 1;
+ if (GNUNET_YES == pp->negate_portrange)
+ cnt = 0xFFFF - cnt;
+ reg = GNUNET_malloc (cnt * 5 + 1);
+ pos = reg;
for (i=1;i<=0xFFFF;i++)
{
if ( ( (i >= pp->start_port) && (i <= pp->end_port) ) ^
(GNUNET_YES == pp->negate_portrange) )
{
- if (NULL == reg)
+ if (pos == reg)
{
- GNUNET_asprintf (&tmp,
+ GNUNET_snprintf (pos,
+ 5,
"%04X",
i);
}
else
{
- GNUNET_asprintf (&tmp,
- "%s|%04X",
- reg,
+ GNUNET_snprintf (pos,
+ 6,
+ "|%04X",
i);
- GNUNET_free (reg);
}
- reg = tmp;
+ pos += strlen (pos);
}
}
GNUNET_asprintf (&ret,
Modified: gnunet/src/tun/test_regex.c
===================================================================
--- gnunet/src/tun/test_regex.c 2013-10-26 14:34:39 UTC (rev 30418)
+++ gnunet/src/tun/test_regex.c 2013-10-26 14:57:24 UTC (rev 30419)
@@ -121,12 +121,17 @@
int
main (int argc, char *argv[])
{
- GNUNET_log_setup ("test-regex", "WARNING", NULL);
-
int error;
+ char *r;
+ GNUNET_log_setup ("test-regex", "WARNING", NULL);
error = 0;
+ /* this is just a performance test ... */
+ r = GNUNET_TUN_ipv4policy2regex ("1.2.3.4/16:!25;");
+ GNUNET_break (NULL != r);
+ GNUNET_free (r);
+
error +=
test_iptoregex ("192.1.2.3", 2086,
"4-0826-C0010203",
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r30419 - gnunet/src/tun,
gnunet <=