diff options
author | Christian Grothoff <christian@grothoff.org> | 2013-08-12 13:54:33 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2013-08-12 13:54:33 +0000 |
commit | 48d15f62ec7ab68fc8602f2a8db219de3dc7d5d6 (patch) | |
tree | b81629aa82e13b8c9dbc5c7ebd4002d93de04a02 | |
parent | e1b1446ff25ce0e5cb7871a16b24e88517d10803 (diff) | |
download | gnunet-48d15f62ec7ab68fc8602f2a8db219de3dc7d5d6.tar.gz gnunet-48d15f62ec7ab68fc8602f2a8db219de3dc7d5d6.zip |
-more code migration to microseconds:
-rw-r--r-- | src/transport/Makefile.am | 2 | ||||
-rw-r--r-- | src/transport/gnunet-service-transport_manipulation.c | 145 | ||||
-rw-r--r-- | src/transport/test_plugin_transport.c | 5 | ||||
-rw-r--r-- | src/transport/test_transport_api_manipulation_cfg_peer1.conf | 4 | ||||
-rw-r--r-- | src/transport/test_transport_api_manipulation_cfg_peer2.conf | 4 | ||||
-rw-r--r-- | src/transport/transport.conf.in | 8 |
6 files changed, 96 insertions, 72 deletions
diff --git a/src/transport/Makefile.am b/src/transport/Makefile.am index 358eba98b..7b900295b 100644 --- a/src/transport/Makefile.am +++ b/src/transport/Makefile.am | |||
@@ -593,7 +593,7 @@ test_plugin_tcp_LDADD = \ | |||
593 | $(top_builddir)/src/hello/libgnunethello.la \ | 593 | $(top_builddir)/src/hello/libgnunethello.la \ |
594 | $(top_builddir)/src/util/libgnunetutil.la \ | 594 | $(top_builddir)/src/util/libgnunetutil.la \ |
595 | $(top_builddir)/src/transport/libgnunettransporttesting.la | 595 | $(top_builddir)/src/transport/libgnunettransporttesting.la |
596 | 596 | ||
597 | test_plugin_udp_SOURCES = \ | 597 | test_plugin_udp_SOURCES = \ |
598 | test_plugin_transport.c | 598 | test_plugin_transport.c |
599 | test_plugin_udp_LDADD = \ | 599 | test_plugin_udp_LDADD = \ |
diff --git a/src/transport/gnunet-service-transport_manipulation.c b/src/transport/gnunet-service-transport_manipulation.c index 0ca732d62..eb75fbb01 100644 --- a/src/transport/gnunet-service-transport_manipulation.c +++ b/src/transport/gnunet-service-transport_manipulation.c | |||
@@ -578,42 +578,62 @@ GST_manipulation_recv (void *cls, | |||
578 | void | 578 | void |
579 | GST_manipulation_init (const struct GNUNET_CONFIGURATION_Handle *GST_cfg) | 579 | GST_manipulation_init (const struct GNUNET_CONFIGURATION_Handle *GST_cfg) |
580 | { | 580 | { |
581 | unsigned long long tmp; | 581 | unsigned long long tmp; |
582 | 582 | struct GNUNET_TIME_Relative delay; | |
583 | if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, | 583 | |
584 | "transport", "MANIPULATE_DISTANCE_IN", &tmp) && (tmp > 0)) | 584 | if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, |
585 | { | 585 | "transport", |
586 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Setting inbound distance_in to %u\n", | 586 | "MANIPULATE_DISTANCE_IN", |
587 | (unsigned long long) tmp); | 587 | &tmp)) && |
588 | set_metric (&man_handle.general, TM_RECEIVE, GNUNET_ATS_QUALITY_NET_DISTANCE, tmp); | 588 | (tmp > 0) ) |
589 | } | 589 | { |
590 | 590 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | |
591 | if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, | 591 | "Setting inbound distance_in to %llu\n", |
592 | "transport", "MANIPULATE_DISTANCE_OUT", &tmp) && (tmp > 0)) | 592 | (unsigned long long) tmp); |
593 | { | 593 | set_metric (&man_handle.general, TM_RECEIVE, GNUNET_ATS_QUALITY_NET_DISTANCE, tmp); |
594 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Setting outbound distance_in to %u\n", | 594 | } |
595 | (unsigned long long) tmp); | 595 | |
596 | set_metric (&man_handle.general, TM_SEND, GNUNET_ATS_QUALITY_NET_DISTANCE, tmp); | 596 | if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, |
597 | } | 597 | "transport", |
598 | 598 | "MANIPULATE_DISTANCE_OUT", | |
599 | if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, | 599 | &tmp)) && |
600 | "transport", "MANIPULATE_DELAY_IN", &tmp) && (tmp > 0)) | 600 | (tmp > 0) ) |
601 | { | 601 | { |
602 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Delaying inbound traffic for %llu ms\n", | 602 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, |
603 | (unsigned long long) tmp); | 603 | "Setting outbound distance_in to %llu\n", |
604 | set_metric (&man_handle.general, TM_RECEIVE, GNUNET_ATS_QUALITY_NET_DELAY, tmp); | 604 | (unsigned long long) tmp); |
605 | } | 605 | set_metric (&man_handle.general, TM_SEND, |
606 | 606 | GNUNET_ATS_QUALITY_NET_DISTANCE, tmp); | |
607 | 607 | } | |
608 | if (GNUNET_OK == GNUNET_CONFIGURATION_get_value_number (GST_cfg, | 608 | |
609 | "transport", "MANIPULATE_DELAY_OUT", &tmp) && (tmp > 0)) | 609 | if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_time (GST_cfg, |
610 | { | 610 | "transport", |
611 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, "Delaying outbound traffic for %llu ms\n", | 611 | "MANIPULATE_DELAY_IN", |
612 | (unsigned long long) tmp); | 612 | &delay)) && |
613 | set_metric (&man_handle.general, TM_SEND, GNUNET_ATS_QUALITY_NET_DELAY, tmp); | 613 | (delay.rel_value_us > 0) ) |
614 | } | 614 | { |
615 | 615 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | |
616 | man_handle.peers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); | 616 | "Delaying inbound traffic for %s\n", |
617 | GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES)); | ||
618 | set_metric (&man_handle.general, TM_RECEIVE, | ||
619 | GNUNET_ATS_QUALITY_NET_DELAY, | ||
620 | delay.rel_value_us); | ||
621 | } | ||
622 | if ( (GNUNET_OK == GNUNET_CONFIGURATION_get_value_time (GST_cfg, | ||
623 | "transport", | ||
624 | "MANIPULATE_DELAY_OUT", | ||
625 | &delay)) && | ||
626 | (delay.rel_value_us > 0) ) | ||
627 | { | ||
628 | GNUNET_log (GNUNET_ERROR_TYPE_INFO, | ||
629 | "Delaying outbound traffic for %s\n", | ||
630 | GNUNET_STRINGS_relative_time_to_string (delay, GNUNET_YES)); | ||
631 | set_metric (&man_handle.general, | ||
632 | TM_SEND, | ||
633 | GNUNET_ATS_QUALITY_NET_DELAY, | ||
634 | delay.rel_value_us); | ||
635 | } | ||
636 | man_handle.peers = GNUNET_CONTAINER_multihashmap_create (10, GNUNET_NO); | ||
617 | } | 637 | } |
618 | 638 | ||
619 | 639 | ||
@@ -622,33 +642,36 @@ free_tmps (void *cls, | |||
622 | const struct GNUNET_HashCode * key, | 642 | const struct GNUNET_HashCode * key, |
623 | void *value) | 643 | void *value) |
624 | { | 644 | { |
625 | struct DelayQueueEntry *dqe; | 645 | struct DelayQueueEntry *dqe; |
626 | struct DelayQueueEntry *next; | 646 | struct DelayQueueEntry *next; |
627 | if (NULL != value) | 647 | |
628 | { | 648 | if (NULL != value) |
629 | struct TM_Peer *tmp = (struct TM_Peer *) value; | 649 | { |
630 | if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove (man_handle.peers, key, value)) | 650 | struct TM_Peer *tmp = (struct TM_Peer *) value; |
631 | GNUNET_break (0); | 651 | |
632 | free_metric (tmp); | 652 | if (GNUNET_YES != GNUNET_CONTAINER_multihashmap_remove (man_handle.peers, key, value)) |
633 | next = tmp->send_head; | 653 | GNUNET_break (0); |
634 | while (NULL != (dqe = next)) | 654 | free_metric (tmp); |
635 | { | 655 | next = tmp->send_head; |
636 | next = dqe->next; | 656 | while (NULL != (dqe = next)) |
637 | GNUNET_CONTAINER_DLL_remove (tmp->send_head, tmp->send_tail, dqe); | 657 | { |
638 | if (NULL != dqe->cont) | 658 | next = dqe->next; |
639 | dqe->cont (dqe->cont_cls, GNUNET_SYSERR, dqe->msg_size, 0); | 659 | GNUNET_CONTAINER_DLL_remove (tmp->send_head, tmp->send_tail, dqe); |
640 | GNUNET_free (dqe); | 660 | if (NULL != dqe->cont) |
641 | } | 661 | dqe->cont (dqe->cont_cls, GNUNET_SYSERR, dqe->msg_size, 0); |
642 | if (GNUNET_SCHEDULER_NO_TASK != tmp->send_delay_task) | 662 | GNUNET_free (dqe); |
643 | { | 663 | } |
644 | GNUNET_SCHEDULER_cancel (tmp->send_delay_task); | 664 | if (GNUNET_SCHEDULER_NO_TASK != tmp->send_delay_task) |
645 | tmp->send_delay_task = GNUNET_SCHEDULER_NO_TASK; | 665 | { |
646 | } | 666 | GNUNET_SCHEDULER_cancel (tmp->send_delay_task); |
647 | GNUNET_free (tmp); | 667 | tmp->send_delay_task = GNUNET_SCHEDULER_NO_TASK; |
648 | } | 668 | } |
649 | return GNUNET_OK; | 669 | GNUNET_free (tmp); |
670 | } | ||
671 | return GNUNET_OK; | ||
650 | } | 672 | } |
651 | 673 | ||
674 | |||
652 | /** | 675 | /** |
653 | * Notify manipulation about disconnect so it can discard queued messages | 676 | * Notify manipulation about disconnect so it can discard queued messages |
654 | * | 677 | * |
diff --git a/src/transport/test_plugin_transport.c b/src/transport/test_plugin_transport.c index ffaad19ff..60cc3c941 100644 --- a/src/transport/test_plugin_transport.c +++ b/src/transport/test_plugin_transport.c | |||
@@ -197,6 +197,7 @@ end_badly (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
197 | { | 197 | { |
198 | struct AddressWrapper *w; | 198 | struct AddressWrapper *w; |
199 | int c = 0; | 199 | int c = 0; |
200 | |||
200 | timeout_endbadly = GNUNET_SCHEDULER_NO_TASK; | 201 | timeout_endbadly = GNUNET_SCHEDULER_NO_TASK; |
201 | if (GNUNET_SCHEDULER_NO_TASK != timeout_wait) | 202 | if (GNUNET_SCHEDULER_NO_TASK != timeout_wait) |
202 | { | 203 | { |
@@ -350,7 +351,7 @@ env_notify_address (void *cls, | |||
350 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, | 351 | GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, |
351 | "Adding address of length %u\n", addrlen); | 352 | "Adding address of length %u\n", addrlen); |
352 | 353 | ||
353 | w = GNUNET_malloc (sizeof (struct AddressWrapper)); | 354 | w = GNUNET_new (struct AddressWrapper); |
354 | w->addr = GNUNET_malloc (addrlen); | 355 | w->addr = GNUNET_malloc (addrlen); |
355 | w->addrlen = addrlen; | 356 | w->addrlen = addrlen; |
356 | memcpy (w->addr, addr, addrlen); | 357 | memcpy (w->addr, addr, addrlen); |
@@ -523,7 +524,6 @@ setup_plugin_environment () | |||
523 | env.my_identity = &my_identity; | 524 | env.my_identity = &my_identity; |
524 | env.max_connections = max_connect_per_transport; | 525 | env.max_connections = max_connect_per_transport; |
525 | env.stats = stats; | 526 | env.stats = stats; |
526 | |||
527 | env.receive = &env_receive; | 527 | env.receive = &env_receive; |
528 | env.notify_address = &env_notify_address; | 528 | env.notify_address = &env_notify_address; |
529 | env.get_address_type = &env_get_address_type; | 529 | env.get_address_type = &env_get_address_type; |
@@ -532,6 +532,7 @@ setup_plugin_environment () | |||
532 | env.session_end = &env_session_end; | 532 | env.session_end = &env_session_end; |
533 | } | 533 | } |
534 | 534 | ||
535 | |||
535 | static int | 536 | static int |
536 | handle_helper_message (void *cls, void *client, | 537 | handle_helper_message (void *cls, void *client, |
537 | const struct GNUNET_MessageHeader *hdr) | 538 | const struct GNUNET_MessageHeader *hdr) |
diff --git a/src/transport/test_transport_api_manipulation_cfg_peer1.conf b/src/transport/test_transport_api_manipulation_cfg_peer1.conf index bfd01d5d8..df5d4c368 100644 --- a/src/transport/test_transport_api_manipulation_cfg_peer1.conf +++ b/src/transport/test_transport_api_manipulation_cfg_peer1.conf | |||
@@ -27,5 +27,5 @@ UNIXPATH = /tmp/gnunet-p1-service-peerinfo.sock | |||
27 | PORT = 12001 | 27 | PORT = 12001 |
28 | UNIXPATH = /tmp/gnunet-p1-service-transport.sock | 28 | UNIXPATH = /tmp/gnunet-p1-service-transport.sock |
29 | PLUGINS = tcp | 29 | PLUGINS = tcp |
30 | MANIPULATE_DELAY_IN = 100 | 30 | MANIPULATE_DELAY_IN = 100 ms |
31 | MANIPULATE_DELAY_OUT = 100 \ No newline at end of file | 31 | MANIPULATE_DELAY_OUT = 100 ms \ No newline at end of file |
diff --git a/src/transport/test_transport_api_manipulation_cfg_peer2.conf b/src/transport/test_transport_api_manipulation_cfg_peer2.conf index d56e906fe..1e16f7838 100644 --- a/src/transport/test_transport_api_manipulation_cfg_peer2.conf +++ b/src/transport/test_transport_api_manipulation_cfg_peer2.conf | |||
@@ -27,5 +27,5 @@ UNIXPATH = /tmp/gnunet-p2-service-peerinfo.sock | |||
27 | PORT = 12010 | 27 | PORT = 12010 |
28 | PLUGINS = tcp | 28 | PLUGINS = tcp |
29 | UNIXPATH = /tmp/gnunet-p2-service-transport.sock | 29 | UNIXPATH = /tmp/gnunet-p2-service-transport.sock |
30 | #MANIPULATE_DELAY_IN = 0 | 30 | #MANIPULATE_DELAY_IN = 0 ms |
31 | #MANIPULATE_DELAY_OUT = 0 | 31 | #MANIPULATE_DELAY_OUT = 0 ms |
diff --git a/src/transport/transport.conf.in b/src/transport/transport.conf.in index d9e8e3324..fd8b5dbbb 100644 --- a/src/transport/transport.conf.in +++ b/src/transport/transport.conf.in | |||
@@ -26,10 +26,10 @@ UNIX_MATCH_GID = YES | |||
26 | # Configuration settings related to traffic manipulation for testing purposes | 26 | # Configuration settings related to traffic manipulation for testing purposes |
27 | # Distance | 27 | # Distance |
28 | # MANIPULATE_DISTANCE_IN = 1 | 28 | # MANIPULATE_DISTANCE_IN = 1 |
29 | # MANIPULATE_DISTANCE_OUT = 1 | 29 | # MANIPULATE_DISTANCE_OUT = 1 |
30 | # Delay in ms; WARNING: to large values may lead to peers not connecting! | 30 | # Delay; WARNING: to large values may lead to peers not connecting! |
31 | # MANIPULATE_DELAY_IN = 1 | 31 | # MANIPULATE_DELAY_IN = 1 ms |
32 | # MANIPULATE_DELAY_OUT = 1 | 32 | # MANIPULATE_DELAY_OUT = 1 ms |
33 | 33 | ||
34 | 34 | ||
35 | [transport-unix] | 35 | [transport-unix] |