diff options
Diffstat (limited to 'src/transport/plugin_transport_wlan.c')
-rw-r--r-- | src/transport/plugin_transport_wlan.c | 413 |
1 files changed, 232 insertions, 181 deletions
diff --git a/src/transport/plugin_transport_wlan.c b/src/transport/plugin_transport_wlan.c index 041e80f86..cbab8cb0f 100644 --- a/src/transport/plugin_transport_wlan.c +++ b/src/transport/plugin_transport_wlan.c | |||
@@ -862,7 +862,7 @@ session_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
862 | struct Sessionqueue *queue = cls; | 862 | struct Sessionqueue *queue = cls; |
863 | 863 | ||
864 | GNUNET_assert (queue != NULL); | 864 | GNUNET_assert (queue != NULL); |
865 | GNUNET_assert(queue->content != NULL); | 865 | GNUNET_assert (queue->content != NULL); |
866 | queue->content->timeout_task = GNUNET_SCHEDULER_NO_TASK; | 866 | queue->content->timeout_task = GNUNET_SCHEDULER_NO_TASK; |
867 | if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN) | 867 | if (tc->reason == GNUNET_SCHEDULER_REASON_SHUTDOWN) |
868 | { | 868 | { |
@@ -873,9 +873,10 @@ session_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
873 | (queue->content->last_activity, SESSION_TIMEOUT)).rel_value == 0) | 873 | (queue->content->last_activity, SESSION_TIMEOUT)).rel_value == 0) |
874 | { | 874 | { |
875 | 875 | ||
876 | GNUNET_assert(queue->content->mac != NULL); | 876 | GNUNET_assert (queue->content->mac != NULL); |
877 | GNUNET_assert(queue->content->mac->plugin != NULL); | 877 | GNUNET_assert (queue->content->mac->plugin != NULL); |
878 | GNUNET_STATISTICS_update (queue->content->mac->plugin->env->stats, _("# wlan session timeouts"), 1, GNUNET_NO); | 878 | GNUNET_STATISTICS_update (queue->content->mac->plugin->env->stats, |
879 | _("# wlan session timeouts"), 1, GNUNET_NO); | ||
879 | free_session (queue->content->mac->plugin, queue, GNUNET_YES); | 880 | free_session (queue->content->mac->plugin, queue, GNUNET_YES); |
880 | } | 881 | } |
881 | else | 882 | else |
@@ -900,7 +901,8 @@ create_session (struct Plugin *plugin, struct MacEndpoint *endpoint, | |||
900 | { | 901 | { |
901 | GNUNET_assert (endpoint != NULL); | 902 | GNUNET_assert (endpoint != NULL); |
902 | GNUNET_assert (plugin != NULL); | 903 | GNUNET_assert (plugin != NULL); |
903 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan session created"), 1, GNUNET_NO); | 904 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan session created"), 1, |
905 | GNUNET_NO); | ||
904 | struct Sessionqueue *queue = | 906 | struct Sessionqueue *queue = |
905 | GNUNET_malloc (sizeof (struct Sessionqueue) + sizeof (struct Session)); | 907 | GNUNET_malloc (sizeof (struct Sessionqueue) + sizeof (struct Session)); |
906 | 908 | ||
@@ -983,7 +985,8 @@ queue_session (struct Plugin *plugin, struct Session *session) | |||
983 | GNUNET_CONTAINER_DLL_insert_tail (plugin->pending_Sessions_head, | 985 | GNUNET_CONTAINER_DLL_insert_tail (plugin->pending_Sessions_head, |
984 | plugin->pending_Sessions_tail, queue); | 986 | plugin->pending_Sessions_tail, queue); |
985 | plugin->pendingsessions++; | 987 | plugin->pendingsessions++; |
986 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending sessions"), plugin->pendingsessions, GNUNET_NO); | 988 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending sessions"), |
989 | plugin->pendingsessions, GNUNET_NO); | ||
987 | } | 990 | } |
988 | 991 | ||
989 | } | 992 | } |
@@ -1132,24 +1135,25 @@ get_next_queue_session (struct Plugin *plugin) | |||
1132 | pm = session->pending_message_head; | 1135 | pm = session->pending_message_head; |
1133 | 1136 | ||
1134 | if (pm == NULL) | 1137 | if (pm == NULL) |
1135 | { | 1138 | { |
1136 | #if DEBUG_wlan | 1139 | #if DEBUG_wlan |
1137 | GNUNET_log_from(GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, | 1140 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, |
1138 | "pending message is empty, should not happen. session %p\n", | 1141 | "pending message is empty, should not happen. session %p\n", |
1139 | session); | 1142 | session); |
1140 | #endif | 1143 | #endif |
1141 | sessionqueue_alt = sessionqueue; | 1144 | sessionqueue_alt = sessionqueue; |
1142 | sessionqueue = sessionqueue->next; | 1145 | sessionqueue = sessionqueue->next; |
1143 | plugin->pendingsessions--; | 1146 | plugin->pendingsessions--; |
1144 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending sessions"), plugin->pendingsessions, GNUNET_NO); | 1147 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending sessions"), |
1145 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, | 1148 | plugin->pendingsessions, GNUNET_NO); |
1146 | plugin->pending_Sessions_tail, | 1149 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, |
1147 | sessionqueue_alt); | 1150 | plugin->pending_Sessions_tail, |
1151 | sessionqueue_alt); | ||
1148 | 1152 | ||
1149 | GNUNET_free (sessionqueue_alt); | 1153 | GNUNET_free (sessionqueue_alt); |
1150 | continue; | 1154 | continue; |
1151 | 1155 | ||
1152 | } | 1156 | } |
1153 | 1157 | ||
1154 | //check for message timeout | 1158 | //check for message timeout |
1155 | if (GNUNET_TIME_absolute_get_remaining (pm->timeout).rel_value > 0) | 1159 | if (GNUNET_TIME_absolute_get_remaining (pm->timeout).rel_value > 0) |
@@ -1161,7 +1165,8 @@ get_next_queue_session (struct Plugin *plugin) | |||
1161 | FRAGMENT_QUEUE_MESSAGES_OUT_PER_SESSION)) | 1165 | FRAGMENT_QUEUE_MESSAGES_OUT_PER_SESSION)) |
1162 | { | 1166 | { |
1163 | plugin->pendingsessions--; | 1167 | plugin->pendingsessions--; |
1164 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending sessions"), plugin->pendingsessions, GNUNET_NO); | 1168 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending sessions"), |
1169 | plugin->pendingsessions, GNUNET_NO); | ||
1165 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, | 1170 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, |
1166 | plugin->pending_Sessions_tail, | 1171 | plugin->pending_Sessions_tail, |
1167 | sessionqueue); | 1172 | sessionqueue); |
@@ -1191,7 +1196,8 @@ get_next_queue_session (struct Plugin *plugin) | |||
1191 | sessionqueue_alt = sessionqueue; | 1196 | sessionqueue_alt = sessionqueue; |
1192 | sessionqueue = sessionqueue->next; | 1197 | sessionqueue = sessionqueue->next; |
1193 | plugin->pendingsessions--; | 1198 | plugin->pendingsessions--; |
1194 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending sessions"), plugin->pendingsessions, GNUNET_NO); | 1199 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending sessions"), |
1200 | plugin->pendingsessions, GNUNET_NO); | ||
1195 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, | 1201 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, |
1196 | plugin->pending_Sessions_tail, | 1202 | plugin->pending_Sessions_tail, |
1197 | sessionqueue_alt); | 1203 | sessionqueue_alt); |
@@ -1217,38 +1223,40 @@ free_fragment_message (struct Plugin *plugin, struct FragmentMessage *fm) | |||
1217 | struct FragmentMessage_queue *fmq; | 1223 | struct FragmentMessage_queue *fmq; |
1218 | struct FragmentMessage_queue *fmq_next; | 1224 | struct FragmentMessage_queue *fmq_next; |
1219 | 1225 | ||
1220 | fmq = plugin->sending_messages_head; | 1226 | fmq = plugin->sending_messages_head; |
1221 | while (fmq != NULL) | 1227 | while (fmq != NULL) |
1228 | { | ||
1229 | fmq_next = fmq->next; | ||
1230 | if (fmq->content == fm) | ||
1222 | { | 1231 | { |
1223 | fmq_next = fmq->next; | 1232 | GNUNET_CONTAINER_DLL_remove (plugin->sending_messages_head, |
1224 | if (fmq->content == fm) | 1233 | plugin->sending_messages_tail, fmq); |
1225 | { | 1234 | GNUNET_free (fmq); |
1226 | GNUNET_CONTAINER_DLL_remove (plugin->sending_messages_head, | ||
1227 | plugin->sending_messages_tail, fmq); | ||
1228 | GNUNET_free (fmq); | ||
1229 | } | ||
1230 | fmq = fmq_next; | ||
1231 | } | 1235 | } |
1236 | fmq = fmq_next; | ||
1237 | } | ||
1232 | 1238 | ||
1233 | (session->mac->fragment_messages_out_count)--; | 1239 | (session->mac->fragment_messages_out_count)--; |
1234 | session->fragment_messages_out_count--; | 1240 | session->fragment_messages_out_count--; |
1235 | plugin->pending_Fragment_Messages--; | 1241 | plugin->pending_Fragment_Messages--; |
1236 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending fragments"), plugin->pending_Fragment_Messages, GNUNET_NO); | 1242 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending fragments"), |
1237 | GNUNET_CONTAINER_DLL_remove (endpoint->sending_messages_head, | 1243 | plugin->pending_Fragment_Messages, GNUNET_NO); |
1238 | endpoint->sending_messages_tail, fm); | 1244 | GNUNET_CONTAINER_DLL_remove (endpoint->sending_messages_head, |
1239 | GNUNET_FRAGMENT_context_destroy (fm->fragcontext); | 1245 | endpoint->sending_messages_tail, fm); |
1240 | if (fm->timeout_task != GNUNET_SCHEDULER_NO_TASK){ | 1246 | GNUNET_FRAGMENT_context_destroy (fm->fragcontext); |
1241 | GNUNET_SCHEDULER_cancel (fm->timeout_task); | 1247 | if (fm->timeout_task != GNUNET_SCHEDULER_NO_TASK) |
1242 | fm->timeout_task = GNUNET_SCHEDULER_NO_TASK; | 1248 | { |
1243 | } | 1249 | GNUNET_SCHEDULER_cancel (fm->timeout_task); |
1250 | fm->timeout_task = GNUNET_SCHEDULER_NO_TASK; | ||
1251 | } | ||
1244 | 1252 | ||
1245 | GNUNET_free (fm); | 1253 | GNUNET_free (fm); |
1246 | 1254 | ||
1247 | queue_session (plugin, session); | 1255 | queue_session (plugin, session); |
1248 | #if DEBUG_wlan | 1256 | #if DEBUG_wlan |
1249 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 1257 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
1250 | "Free pending fragment messages %p, session %p\n", fm, | 1258 | "Free pending fragment messages %p, session %p\n", fm, |
1251 | session); | 1259 | session); |
1252 | #endif | 1260 | #endif |
1253 | } | 1261 | } |
1254 | 1262 | ||
@@ -1499,15 +1507,17 @@ wlan_transport_start_wlan_helper (struct Plugin *plugin) | |||
1499 | else | 1507 | else |
1500 | { | 1508 | { |
1501 | char cwd[FILENAME_MAX]; | 1509 | char cwd[FILENAME_MAX]; |
1502 | GNUNET_assert (getcwd(cwd, sizeof(cwd)) != NULL); | ||
1503 | 1510 | ||
1504 | GNUNET_asprintf (&absolute_filename, "%s%s%s", cwd, DIR_SEPARATOR_STR, filenameloopback); | 1511 | GNUNET_assert (getcwd (cwd, sizeof (cwd)) != NULL); |
1512 | |||
1513 | GNUNET_asprintf (&absolute_filename, "%s%s%s", cwd, DIR_SEPARATOR_STR, | ||
1514 | filenameloopback); | ||
1505 | 1515 | ||
1506 | if (GNUNET_DISK_file_test (filenameloopback) != GNUNET_YES) | 1516 | if (GNUNET_DISK_file_test (filenameloopback) != GNUNET_YES) |
1507 | { | 1517 | { |
1508 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, | 1518 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, |
1509 | "Helper `%s' not found! %i\n", absolute_filename); | 1519 | "Helper `%s' not found! %i\n", absolute_filename); |
1510 | GNUNET_break(0); | 1520 | GNUNET_break (0); |
1511 | } | 1521 | } |
1512 | } | 1522 | } |
1513 | } | 1523 | } |
@@ -1552,14 +1562,16 @@ wlan_transport_start_wlan_helper (struct Plugin *plugin) | |||
1552 | "Starting gnunet-wlan-helper loopback 1 process cmd: %s %s %i\n", | 1562 | "Starting gnunet-wlan-helper loopback 1 process cmd: %s %s %i\n", |
1553 | absolute_filename, plugin->interface, plugin->testmode); | 1563 | absolute_filename, plugin->interface, plugin->testmode); |
1554 | #endif | 1564 | #endif |
1555 | plugin->server_proc = GNUNET_OS_start_process (plugin->server_stdin, plugin->server_stdout, | 1565 | plugin->server_proc = |
1556 | absolute_filename, absolute_filename, "1", | 1566 | GNUNET_OS_start_process (plugin->server_stdin, plugin->server_stdout, |
1557 | NULL); | 1567 | absolute_filename, absolute_filename, "1", |
1568 | NULL); | ||
1558 | if (plugin->server_proc == NULL) | 1569 | if (plugin->server_proc == NULL) |
1559 | { | 1570 | { |
1560 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, | 1571 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, |
1561 | "`%s' not found, please look if it exists and is in the $PATH variable!\n", absolute_filename); | 1572 | "`%s' not found, please look if it exists and is in the $PATH variable!\n", |
1562 | GNUNET_break (0); | 1573 | absolute_filename); |
1574 | GNUNET_break (0); | ||
1563 | } | 1575 | } |
1564 | } | 1576 | } |
1565 | else if (plugin->testmode == 2) | 1577 | else if (plugin->testmode == 2) |
@@ -1570,18 +1582,20 @@ wlan_transport_start_wlan_helper (struct Plugin *plugin) | |||
1570 | absolute_filename, plugin->interface, plugin->testmode); | 1582 | absolute_filename, plugin->interface, plugin->testmode); |
1571 | #endif | 1583 | #endif |
1572 | 1584 | ||
1573 | plugin->server_proc = GNUNET_OS_start_process (plugin->server_stdin, plugin->server_stdout, | 1585 | plugin->server_proc = |
1574 | absolute_filename, absolute_filename, "2", | 1586 | GNUNET_OS_start_process (plugin->server_stdin, plugin->server_stdout, |
1575 | NULL); | 1587 | absolute_filename, absolute_filename, "2", |
1576 | if (plugin->server_proc == NULL) | 1588 | NULL); |
1577 | { | 1589 | if (plugin->server_proc == NULL) |
1578 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, | 1590 | { |
1579 | "`%s' not found, please look if it exists and is in the $PATH variable!\n", absolute_filename); | 1591 | GNUNET_log_from (GNUNET_ERROR_TYPE_ERROR, PLUGIN_LOG_NAME, |
1592 | "`%s' not found, please look if it exists and is in the $PATH variable!\n", | ||
1593 | absolute_filename); | ||
1580 | GNUNET_break (0); | 1594 | GNUNET_break (0); |
1581 | } | 1595 | } |
1582 | } | 1596 | } |
1583 | if (absolute_filename != NULL) | 1597 | if (absolute_filename != NULL) |
1584 | GNUNET_free(absolute_filename); | 1598 | GNUNET_free (absolute_filename); |
1585 | if (plugin->server_proc == NULL) | 1599 | if (plugin->server_proc == NULL) |
1586 | { | 1600 | { |
1587 | #if DEBUG_wlan | 1601 | #if DEBUG_wlan |
@@ -1632,8 +1646,8 @@ static int | |||
1632 | wlan_transport_stop_wlan_helper (struct Plugin *plugin) | 1646 | wlan_transport_stop_wlan_helper (struct Plugin *plugin) |
1633 | { | 1647 | { |
1634 | #if DEBUG_wlan | 1648 | #if DEBUG_wlan |
1635 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 1649 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
1636 | "Stoping WLAN helper process\n"); | 1650 | "Stoping WLAN helper process\n"); |
1637 | #endif | 1651 | #endif |
1638 | 1652 | ||
1639 | if (plugin->server_write_delay_task != GNUNET_SCHEDULER_NO_TASK) | 1653 | if (plugin->server_write_delay_task != GNUNET_SCHEDULER_NO_TASK) |
@@ -1657,7 +1671,7 @@ wlan_transport_stop_wlan_helper (struct Plugin *plugin) | |||
1657 | GNUNET_DISK_pipe_close (plugin->server_stdout); | 1671 | GNUNET_DISK_pipe_close (plugin->server_stdout); |
1658 | GNUNET_DISK_pipe_close (plugin->server_stdin); | 1672 | GNUNET_DISK_pipe_close (plugin->server_stdin); |
1659 | GNUNET_OS_process_kill (plugin->server_proc, SIGKILL); | 1673 | GNUNET_OS_process_kill (plugin->server_proc, SIGKILL); |
1660 | GNUNET_OS_process_wait(plugin->server_proc); | 1674 | GNUNET_OS_process_wait (plugin->server_proc); |
1661 | GNUNET_OS_process_close (plugin->server_proc); | 1675 | GNUNET_OS_process_close (plugin->server_proc); |
1662 | 1676 | ||
1663 | return GNUNET_YES; | 1677 | return GNUNET_YES; |
@@ -1673,31 +1687,32 @@ delay_restart_helper (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1673 | { | 1687 | { |
1674 | struct Finish_send *finish = cls; | 1688 | struct Finish_send *finish = cls; |
1675 | struct Plugin *plugin; | 1689 | struct Plugin *plugin; |
1690 | |||
1676 | plugin = finish->plugin; | 1691 | plugin = finish->plugin; |
1677 | 1692 | ||
1678 | plugin->server_write_task = GNUNET_SCHEDULER_NO_TASK; | 1693 | plugin->server_write_task = GNUNET_SCHEDULER_NO_TASK; |
1679 | if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) | 1694 | if (0 != (GNUNET_SCHEDULER_REASON_SHUTDOWN & tc->reason)) |
1680 | { | 1695 | { |
1681 | GNUNET_free_non_null(finish->msgstart); | 1696 | GNUNET_free_non_null (finish->msgstart); |
1682 | GNUNET_free (finish); | 1697 | GNUNET_free (finish); |
1683 | return; | 1698 | return; |
1684 | } | 1699 | } |
1685 | 1700 | ||
1686 | wlan_transport_start_wlan_helper(plugin); | 1701 | wlan_transport_start_wlan_helper (plugin); |
1687 | 1702 | ||
1688 | if (finish->size != 0) | 1703 | if (finish->size != 0) |
1689 | { | 1704 | { |
1690 | plugin->server_write_task = | 1705 | plugin->server_write_task = |
1691 | GNUNET_SCHEDULER_add_write_file (GNUNET_TIME_UNIT_FOREVER_REL, | 1706 | GNUNET_SCHEDULER_add_write_file (GNUNET_TIME_UNIT_FOREVER_REL, |
1692 | plugin->server_stdin_handle, | 1707 | plugin->server_stdin_handle, |
1693 | &finish_sending, finish); | 1708 | &finish_sending, finish); |
1694 | } | 1709 | } |
1695 | else | 1710 | else |
1696 | { | 1711 | { |
1697 | set_next_send (plugin); | 1712 | set_next_send (plugin); |
1698 | GNUNET_free_non_null(finish->msgstart); | 1713 | GNUNET_free_non_null (finish->msgstart); |
1699 | GNUNET_free (finish); | 1714 | GNUNET_free (finish); |
1700 | } | 1715 | } |
1701 | 1716 | ||
1702 | } | 1717 | } |
1703 | 1718 | ||
@@ -1707,14 +1722,15 @@ delay_restart_helper (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1707 | * @param finish pointer to the Finish_send struct to finish | 1722 | * @param finish pointer to the Finish_send struct to finish |
1708 | */ | 1723 | */ |
1709 | static void | 1724 | static void |
1710 | restart_helper(struct Plugin *plugin, struct Finish_send *finish) | 1725 | restart_helper (struct Plugin *plugin, struct Finish_send *finish) |
1711 | { | 1726 | { |
1712 | static struct GNUNET_TIME_Relative next_try = {1000}; | 1727 | static struct GNUNET_TIME_Relative next_try = { 1000 }; |
1713 | GNUNET_assert(finish != NULL); | 1728 | GNUNET_assert (finish != NULL); |
1714 | 1729 | ||
1715 | wlan_transport_stop_wlan_helper(plugin); | 1730 | wlan_transport_stop_wlan_helper (plugin); |
1716 | plugin->server_write_task = GNUNET_SCHEDULER_add_delayed (next_try, &delay_restart_helper, finish); | 1731 | plugin->server_write_task = |
1717 | GNUNET_TIME_relative_multiply(next_try, HELPER_RESTART_SCALING_FACTOR); | 1732 | GNUNET_SCHEDULER_add_delayed (next_try, &delay_restart_helper, finish); |
1733 | GNUNET_TIME_relative_multiply (next_try, HELPER_RESTART_SCALING_FACTOR); | ||
1718 | 1734 | ||
1719 | } | 1735 | } |
1720 | 1736 | ||
@@ -1740,24 +1756,24 @@ finish_sending (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
1740 | return; | 1756 | return; |
1741 | } | 1757 | } |
1742 | bytes = | 1758 | bytes = |
1743 | GNUNET_DISK_file_write (plugin->server_stdin_handle, finish->head_of_next_write, | 1759 | GNUNET_DISK_file_write (plugin->server_stdin_handle, |
1744 | finish->size); | 1760 | finish->head_of_next_write, finish->size); |
1745 | 1761 | ||
1746 | if (bytes != finish->size) | 1762 | if (bytes != finish->size) |
1747 | { | 1763 | { |
1748 | if (bytes != GNUNET_SYSERR) | 1764 | if (bytes != GNUNET_SYSERR) |
1749 | { | 1765 | { |
1750 | finish->head_of_next_write += bytes; | 1766 | finish->head_of_next_write += bytes; |
1751 | finish->size -= bytes; | 1767 | finish->size -= bytes; |
1752 | plugin->server_write_task = | 1768 | plugin->server_write_task = |
1753 | GNUNET_SCHEDULER_add_write_file (GNUNET_TIME_UNIT_FOREVER_REL, | 1769 | GNUNET_SCHEDULER_add_write_file (GNUNET_TIME_UNIT_FOREVER_REL, |
1754 | plugin->server_stdin_handle, | 1770 | plugin->server_stdin_handle, |
1755 | &finish_sending, finish); | 1771 | &finish_sending, finish); |
1756 | } | 1772 | } |
1757 | else | 1773 | else |
1758 | { | 1774 | { |
1759 | restart_helper(plugin, finish); | 1775 | restart_helper (plugin, finish); |
1760 | } | 1776 | } |
1761 | } | 1777 | } |
1762 | else | 1778 | else |
1763 | { | 1779 | { |
@@ -1788,11 +1804,12 @@ send_hello_beacon (struct Plugin *plugin) | |||
1788 | struct Radiotap_Send *radioHeader; | 1804 | struct Radiotap_Send *radioHeader; |
1789 | struct GNUNET_MessageHeader *msgheader2; | 1805 | struct GNUNET_MessageHeader *msgheader2; |
1790 | const struct GNUNET_MessageHeader *hello; | 1806 | const struct GNUNET_MessageHeader *hello; |
1791 | struct Finish_send * finish; | 1807 | struct Finish_send *finish; |
1792 | 1808 | ||
1793 | GNUNET_assert (plugin != NULL); | 1809 | GNUNET_assert (plugin != NULL); |
1794 | 1810 | ||
1795 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan hello beacons send"), 1, GNUNET_NO); | 1811 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan hello beacons send"), |
1812 | 1, GNUNET_NO); | ||
1796 | 1813 | ||
1797 | hello = plugin->env->get_our_hello (); | 1814 | hello = plugin->env->get_our_hello (); |
1798 | hello_size = GNUNET_HELLO_size ((struct GNUNET_HELLO_Message *) hello); | 1815 | hello_size = GNUNET_HELLO_size ((struct GNUNET_HELLO_Message *) hello); |
@@ -1812,10 +1829,10 @@ send_hello_beacon (struct Plugin *plugin) | |||
1812 | 1829 | ||
1813 | msgheader2 = (struct GNUNET_MessageHeader *) &ieeewlanheader[1]; | 1830 | msgheader2 = (struct GNUNET_MessageHeader *) &ieeewlanheader[1]; |
1814 | /*msgheader2->size = | 1831 | /*msgheader2->size = |
1815 | htons (GNUNET_HELLO_size ((struct GNUNET_HELLO_Message *) hello) + | 1832 | * htons (GNUNET_HELLO_size ((struct GNUNET_HELLO_Message *) hello) + |
1816 | sizeof (struct GNUNET_MessageHeader)); | 1833 | * sizeof (struct GNUNET_MessageHeader)); |
1817 | 1834 | * | |
1818 | msgheader2->type = htons (GNUNET_MESSAGE_TYPE_WLAN_ADVERTISEMENT);*/ | 1835 | * msgheader2->type = htons (GNUNET_MESSAGE_TYPE_WLAN_ADVERTISEMENT); */ |
1819 | memcpy (msgheader2, hello, hello_size); | 1836 | memcpy (msgheader2, hello, hello_size); |
1820 | 1837 | ||
1821 | bytes = GNUNET_DISK_file_write (plugin->server_stdin_handle, msgheader, size); | 1838 | bytes = GNUNET_DISK_file_write (plugin->server_stdin_handle, msgheader, size); |
@@ -1831,17 +1848,17 @@ send_hello_beacon (struct Plugin *plugin) | |||
1831 | finish->head_of_next_write = NULL; | 1848 | finish->head_of_next_write = NULL; |
1832 | finish->size = 0; | 1849 | finish->size = 0; |
1833 | finish->msgstart = NULL; | 1850 | finish->msgstart = NULL; |
1834 | restart_helper(plugin, finish); | 1851 | restart_helper (plugin, finish); |
1835 | 1852 | ||
1836 | set_next_beacon_time (plugin); | 1853 | set_next_beacon_time (plugin); |
1837 | 1854 | ||
1838 | } | 1855 | } |
1839 | else | 1856 | else |
1840 | { | 1857 | { |
1841 | GNUNET_assert (bytes == size); | 1858 | GNUNET_assert (bytes == size); |
1842 | set_next_beacon_time (plugin); | 1859 | set_next_beacon_time (plugin); |
1843 | set_next_send (plugin); | 1860 | set_next_send (plugin); |
1844 | } | 1861 | } |
1845 | GNUNET_free (msgheader); | 1862 | GNUNET_free (msgheader); |
1846 | 1863 | ||
1847 | 1864 | ||
@@ -1951,7 +1968,8 @@ check_fragment_queue (struct Plugin *plugin) | |||
1951 | session->mac->fragment_messages_out_count++; | 1968 | session->mac->fragment_messages_out_count++; |
1952 | session->fragment_messages_out_count++; | 1969 | session->fragment_messages_out_count++; |
1953 | plugin->pending_Fragment_Messages++; | 1970 | plugin->pending_Fragment_Messages++; |
1954 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending fragments"), plugin->pending_Fragment_Messages, GNUNET_NO); | 1971 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending fragments"), |
1972 | plugin->pending_Fragment_Messages, GNUNET_NO); | ||
1955 | 1973 | ||
1956 | fm = GNUNET_malloc (sizeof (struct FragmentMessage)); | 1974 | fm = GNUNET_malloc (sizeof (struct FragmentMessage)); |
1957 | fm->session = session; | 1975 | fm->session = session; |
@@ -2012,7 +2030,7 @@ send_ack (struct Plugin *plugin) | |||
2012 | 2030 | ||
2013 | ssize_t bytes; | 2031 | ssize_t bytes; |
2014 | struct AckSendQueue *ack; | 2032 | struct AckSendQueue *ack; |
2015 | struct Finish_send * finish; | 2033 | struct Finish_send *finish; |
2016 | 2034 | ||
2017 | ack = plugin->ack_send_queue_head; | 2035 | ack = plugin->ack_send_queue_head; |
2018 | 2036 | ||
@@ -2025,7 +2043,8 @@ send_ack (struct Plugin *plugin) | |||
2025 | #endif | 2043 | #endif |
2026 | 2044 | ||
2027 | GNUNET_assert (plugin != NULL); | 2045 | GNUNET_assert (plugin != NULL); |
2028 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan acks send"), 1, GNUNET_NO); | 2046 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan acks send"), 1, |
2047 | GNUNET_NO); | ||
2029 | 2048 | ||
2030 | getRadiotapHeader (plugin, ack->endpoint, ack->radioHeader); | 2049 | getRadiotapHeader (plugin, ack->endpoint, ack->radioHeader); |
2031 | getWlanHeader (ack->ieeewlanheader, &ack->endpoint->addr, plugin, | 2050 | getWlanHeader (ack->ieeewlanheader, &ack->endpoint->addr, plugin, |
@@ -2045,7 +2064,7 @@ send_ack (struct Plugin *plugin) | |||
2045 | finish->head_of_next_write = NULL; | 2064 | finish->head_of_next_write = NULL; |
2046 | finish->size = 0; | 2065 | finish->size = 0; |
2047 | finish->msgstart = NULL; | 2066 | finish->msgstart = NULL; |
2048 | restart_helper(plugin, finish); | 2067 | restart_helper (plugin, finish); |
2049 | } | 2068 | } |
2050 | else | 2069 | else |
2051 | { | 2070 | { |
@@ -2067,6 +2086,7 @@ static void | |||
2067 | do_transmit (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | 2086 | do_transmit (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) |
2068 | { | 2087 | { |
2069 | struct Plugin *plugin = cls; | 2088 | struct Plugin *plugin = cls; |
2089 | |||
2070 | GNUNET_assert (plugin != NULL); | 2090 | GNUNET_assert (plugin != NULL); |
2071 | 2091 | ||
2072 | plugin->server_write_task = GNUNET_SCHEDULER_NO_TASK; | 2092 | plugin->server_write_task = GNUNET_SCHEDULER_NO_TASK; |
@@ -2094,7 +2114,8 @@ do_transmit (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
2094 | 2114 | ||
2095 | if (plugin->sending_messages_head != NULL) | 2115 | if (plugin->sending_messages_head != NULL) |
2096 | { | 2116 | { |
2097 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan fragments send"), 1, GNUNET_NO); | 2117 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan fragments send"), 1, |
2118 | GNUNET_NO); | ||
2098 | 2119 | ||
2099 | fmq = plugin->sending_messages_head; | 2120 | fmq = plugin->sending_messages_head; |
2100 | fm = fmq->content; | 2121 | fm = fmq->content; |
@@ -2136,16 +2157,16 @@ do_transmit (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
2136 | 2157 | ||
2137 | finish->head_of_next_write = fm->frag; | 2158 | finish->head_of_next_write = fm->frag; |
2138 | finish->size = fm->size; | 2159 | finish->size = fm->size; |
2139 | restart_helper(plugin, finish); | 2160 | restart_helper (plugin, finish); |
2140 | } | 2161 | } |
2141 | else | 2162 | else |
2142 | { | 2163 | { |
2143 | finish->head_of_next_write = fm->frag + bytes; | 2164 | finish->head_of_next_write = fm->frag + bytes; |
2144 | finish->size = fm->size - bytes; | 2165 | finish->size = fm->size - bytes; |
2145 | plugin->server_write_task = | 2166 | plugin->server_write_task = |
2146 | GNUNET_SCHEDULER_add_write_file (GNUNET_TIME_UNIT_FOREVER_REL, | 2167 | GNUNET_SCHEDULER_add_write_file (GNUNET_TIME_UNIT_FOREVER_REL, |
2147 | plugin->server_stdin_handle, | 2168 | plugin->server_stdin_handle, |
2148 | &finish_sending, finish); | 2169 | &finish_sending, finish); |
2149 | } | 2170 | } |
2150 | 2171 | ||
2151 | fm->frag = NULL; | 2172 | fm->frag = NULL; |
@@ -2192,13 +2213,15 @@ wlan_plugin_address_suggested (void *cls, const void *addr, size_t addrlen) | |||
2192 | /* TODO check for bad addresses like multicast, broadcast, etc */ | 2213 | /* TODO check for bad addresses like multicast, broadcast, etc */ |
2193 | #if DEBUG_wlan | 2214 | #if DEBUG_wlan |
2194 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 2215 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
2195 | "wlan_plugin_address_suggested got good address, size %u!\n", addrlen); | 2216 | "wlan_plugin_address_suggested got good address, size %u!\n", |
2217 | addrlen); | ||
2196 | #endif | 2218 | #endif |
2197 | return GNUNET_OK; | 2219 | return GNUNET_OK; |
2198 | } | 2220 | } |
2199 | #if DEBUG_wlan | 2221 | #if DEBUG_wlan |
2200 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 2222 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
2201 | "wlan_plugin_address_suggested got bad address, size %u!\n", addrlen); | 2223 | "wlan_plugin_address_suggested got bad address, size %u!\n", |
2224 | addrlen); | ||
2202 | #endif | 2225 | #endif |
2203 | return GNUNET_SYSERR; | 2226 | return GNUNET_SYSERR; |
2204 | } | 2227 | } |
@@ -2239,6 +2262,7 @@ wlan_plugin_send (void *cls, const struct GNUNET_PeerIdentity *target, | |||
2239 | struct Plugin *plugin = cls; | 2262 | struct Plugin *plugin = cls; |
2240 | struct PendingMessage *newmsg; | 2263 | struct PendingMessage *newmsg; |
2241 | struct WlanHeader *wlanheader; | 2264 | struct WlanHeader *wlanheader; |
2265 | |||
2242 | GNUNET_assert (plugin != NULL); | 2266 | GNUNET_assert (plugin != NULL); |
2243 | //check if msglen > 0 | 2267 | //check if msglen > 0 |
2244 | GNUNET_assert (msgbuf_size > 0); | 2268 | GNUNET_assert (msgbuf_size > 0); |
@@ -2258,7 +2282,8 @@ wlan_plugin_send (void *cls, const struct GNUNET_PeerIdentity *target, | |||
2258 | } | 2282 | } |
2259 | } | 2283 | } |
2260 | 2284 | ||
2261 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messages queued"), 1, GNUNET_NO); | 2285 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messages queued"), 1, |
2286 | GNUNET_NO); | ||
2262 | 2287 | ||
2263 | //queue message: | 2288 | //queue message: |
2264 | 2289 | ||
@@ -2348,7 +2373,8 @@ free_macendpoint (struct Plugin *plugin, struct MacEndpoint *endpoint) | |||
2348 | endpoint->timeout_task = GNUNET_SCHEDULER_NO_TASK; | 2373 | endpoint->timeout_task = GNUNET_SCHEDULER_NO_TASK; |
2349 | } | 2374 | } |
2350 | plugin->mac_count--; | 2375 | plugin->mac_count--; |
2351 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan mac endpoints"), plugin->mac_count, GNUNET_NO); | 2376 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan mac endpoints"), |
2377 | plugin->mac_count, GNUNET_NO); | ||
2352 | GNUNET_free (endpoint); | 2378 | GNUNET_free (endpoint); |
2353 | 2379 | ||
2354 | } | 2380 | } |
@@ -2386,7 +2412,8 @@ free_session (struct Plugin *plugin, struct Sessionqueue *queue, | |||
2386 | if (pendingsession_tmp->content == queue->content) | 2412 | if (pendingsession_tmp->content == queue->content) |
2387 | { | 2413 | { |
2388 | plugin->pendingsessions--; | 2414 | plugin->pendingsessions--; |
2389 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending sessions"), plugin->pendingsessions, GNUNET_NO); | 2415 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending sessions"), |
2416 | plugin->pendingsessions, GNUNET_NO); | ||
2390 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, | 2417 | GNUNET_CONTAINER_DLL_remove (plugin->pending_Sessions_head, |
2391 | plugin->pending_Sessions_tail, | 2418 | plugin->pending_Sessions_tail, |
2392 | pendingsession_tmp); | 2419 | pendingsession_tmp); |
@@ -2423,12 +2450,14 @@ free_session (struct Plugin *plugin, struct Sessionqueue *queue, | |||
2423 | GNUNET_CONTAINER_DLL_remove (endpoint->sessions_head, endpoint->sessions_tail, | 2450 | GNUNET_CONTAINER_DLL_remove (endpoint->sessions_head, endpoint->sessions_tail, |
2424 | queue); | 2451 | queue); |
2425 | //Check that no ohter session on this endpoint for this session exits | 2452 | //Check that no ohter session on this endpoint for this session exits |
2426 | GNUNET_assert(search_session(plugin, endpoint, &queue->content->target) == NULL); | 2453 | GNUNET_assert (search_session (plugin, endpoint, &queue->content->target) == |
2454 | NULL); | ||
2427 | if (endpoint->sessions_head == NULL && do_free_macendpoint == GNUNET_YES) | 2455 | if (endpoint->sessions_head == NULL && do_free_macendpoint == GNUNET_YES) |
2428 | { | 2456 | { |
2429 | free_macendpoint (plugin, endpoint); | 2457 | free_macendpoint (plugin, endpoint); |
2430 | //check if no endpoint with the same address exists | 2458 | //check if no endpoint with the same address exists |
2431 | GNUNET_assert(get_macendpoint(plugin, &endpoint->addr, GNUNET_NO) == NULL); | 2459 | GNUNET_assert (get_macendpoint (plugin, &endpoint->addr, GNUNET_NO) == |
2460 | NULL); | ||
2432 | } | 2461 | } |
2433 | 2462 | ||
2434 | if (queue->content->timeout_task != GNUNET_SCHEDULER_NO_TASK) | 2463 | if (queue->content->timeout_task != GNUNET_SCHEDULER_NO_TASK) |
@@ -2507,31 +2536,31 @@ wlan_plugin_address_pretty_printer (void *cls, const char *type, | |||
2507 | const unsigned char *input; | 2536 | const unsigned char *input; |
2508 | 2537 | ||
2509 | //GNUNET_assert(cls !=NULL); | 2538 | //GNUNET_assert(cls !=NULL); |
2510 | if (addrlen != sizeof(struct MacAddress)) | 2539 | if (addrlen != sizeof (struct MacAddress)) |
2511 | { | 2540 | { |
2512 | /* invalid address (MAC addresses have 6 bytes) */ | 2541 | /* invalid address (MAC addresses have 6 bytes) */ |
2513 | //GNUNET_break (0); | 2542 | //GNUNET_break (0); |
2514 | #if DEBUG_wlan | 2543 | #if DEBUG_wlan |
2515 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 2544 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
2516 | "Func wlan_plugin_address_pretty_printer got size: %u, worng size!\n", | 2545 | "Func wlan_plugin_address_pretty_printer got size: %u, worng size!\n", |
2517 | addrlen); | 2546 | addrlen); |
2518 | #endif | 2547 | #endif |
2519 | asc(asc_cls, NULL); | 2548 | asc (asc_cls, NULL); |
2520 | return; | 2549 | return; |
2521 | } | 2550 | } |
2522 | input = (const unsigned char *) addr; | 2551 | input = (const unsigned char *) addr; |
2523 | GNUNET_asprintf (&ret, | 2552 | GNUNET_asprintf (&ret, |
2524 | "Transport %s: %s Mac-Address %.2X:%.2X:%.2X:%.2X:%.2X:%.2X",type, | 2553 | "Transport %s: %s Mac-Address %.2X:%.2X:%.2X:%.2X:%.2X:%.2X", |
2525 | PROTOCOL_PREFIX, input[0], input[1], input[2], input[3], | 2554 | type, PROTOCOL_PREFIX, input[0], input[1], input[2], |
2526 | input[4], input[5]); | 2555 | input[3], input[4], input[5]); |
2527 | #if DEBUG_wlan | 2556 | #if DEBUG_wlan |
2528 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 2557 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
2529 | "Func wlan_plugin_address_pretty_printer got size: %u, nummeric %u, type %s; made string: %s\n", | 2558 | "Func wlan_plugin_address_pretty_printer got size: %u, nummeric %u, type %s; made string: %s\n", |
2530 | addrlen, numeric, type, ret); | 2559 | addrlen, numeric, type, ret); |
2531 | #endif | 2560 | #endif |
2532 | asc ( asc_cls, ret); | 2561 | asc (asc_cls, ret); |
2533 | //only one mac address per plugin | 2562 | //only one mac address per plugin |
2534 | asc ( asc_cls, NULL); | 2563 | asc (asc_cls, NULL); |
2535 | } | 2564 | } |
2536 | 2565 | ||
2537 | 2566 | ||
@@ -2571,7 +2600,9 @@ wlan_data_message_handler (void *cls, const struct GNUNET_MessageHeader *hdr) | |||
2571 | return; | 2600 | return; |
2572 | } | 2601 | } |
2573 | 2602 | ||
2574 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan whole messages received"), 1, GNUNET_NO); | 2603 | GNUNET_STATISTICS_update (plugin->env->stats, |
2604 | _("# wlan whole messages received"), 1, | ||
2605 | GNUNET_NO); | ||
2575 | wlanheader = (struct WlanHeader *) hdr; | 2606 | wlanheader = (struct WlanHeader *) hdr; |
2576 | 2607 | ||
2577 | session = search_session (plugin, endpoint, &wlanheader->source); | 2608 | session = search_session (plugin, endpoint, &wlanheader->source); |
@@ -2711,9 +2742,8 @@ process_data (void *cls, void *client, const struct GNUNET_MessageHeader *hdr) | |||
2711 | #endif | 2742 | #endif |
2712 | 2743 | ||
2713 | plugin->env->receive (plugin->env->cls, &(session->target), hdr, | 2744 | plugin->env->receive (plugin->env->cls, &(session->target), hdr, |
2714 | (const struct GNUNET_ATS_Information *) | 2745 | (const struct GNUNET_ATS_Information *) &distance, 1, |
2715 | &distance, 1, session, | 2746 | session, (const char *) &session->mac->addr, |
2716 | (const char *) &session->mac->addr, | ||
2717 | sizeof (session->mac->addr)); | 2747 | sizeof (session->mac->addr)); |
2718 | } | 2748 | } |
2719 | 2749 | ||
@@ -2735,7 +2765,7 @@ wlan_data_helper (void *cls, struct Session_light *session_light, | |||
2735 | struct FragmentMessage *fm2; | 2765 | struct FragmentMessage *fm2; |
2736 | struct GNUNET_PeerIdentity tmpsource; | 2766 | struct GNUNET_PeerIdentity tmpsource; |
2737 | 2767 | ||
2738 | GNUNET_assert(plugin != NULL); | 2768 | GNUNET_assert (plugin != NULL); |
2739 | 2769 | ||
2740 | //ADVERTISEMENT | 2770 | //ADVERTISEMENT |
2741 | if (ntohs (hdr->type) == GNUNET_MESSAGE_TYPE_HELLO) | 2771 | if (ntohs (hdr->type) == GNUNET_MESSAGE_TYPE_HELLO) |
@@ -2761,18 +2791,22 @@ wlan_data_helper (void *cls, struct Session_light *session_light, | |||
2761 | 2791 | ||
2762 | 2792 | ||
2763 | if (GNUNET_HELLO_get_id | 2793 | if (GNUNET_HELLO_get_id |
2764 | ((const struct GNUNET_HELLO_Message *) hdr, | 2794 | ((const struct GNUNET_HELLO_Message *) hdr, &tmpsource) == GNUNET_OK) |
2765 | &tmpsource) == GNUNET_OK) | ||
2766 | { | 2795 | { |
2767 | session_light->session = search_session (plugin, session_light->macendpoint, &tmpsource); | 2796 | session_light->session = |
2797 | search_session (plugin, session_light->macendpoint, &tmpsource); | ||
2768 | if (session_light->session == NULL) | 2798 | if (session_light->session == NULL) |
2769 | { | 2799 | { |
2770 | session_light->session = create_session (plugin, session_light->macendpoint, &tmpsource); | 2800 | session_light->session = |
2771 | } | 2801 | create_session (plugin, session_light->macendpoint, &tmpsource); |
2772 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan hello messages received"), 1, GNUNET_NO); | 2802 | } |
2773 | plugin->env->receive(plugin->env->cls,&session_light->session->target,hdr, NULL, 0, session_light->session, | 2803 | GNUNET_STATISTICS_update (plugin->env->stats, |
2774 | (const char *) &session_light->session->mac->addr, | 2804 | _("# wlan hello messages received"), 1, |
2775 | sizeof (session_light->session->mac->addr)); | 2805 | GNUNET_NO); |
2806 | plugin->env->receive (plugin->env->cls, &session_light->session->target, | ||
2807 | hdr, NULL, 0, session_light->session, | ||
2808 | (const char *) &session_light->session->mac->addr, | ||
2809 | sizeof (session_light->session->mac->addr)); | ||
2776 | } | 2810 | } |
2777 | else | 2811 | else |
2778 | { | 2812 | { |
@@ -2803,7 +2837,8 @@ wlan_data_helper (void *cls, struct Session_light *session_light, | |||
2803 | 6)); | 2837 | 6)); |
2804 | #endif | 2838 | #endif |
2805 | 2839 | ||
2806 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan fragments received"), 1, GNUNET_NO); | 2840 | GNUNET_STATISTICS_update (plugin->env->stats, |
2841 | _("# wlan fragments received"), 1, GNUNET_NO); | ||
2807 | int ret = | 2842 | int ret = |
2808 | GNUNET_DEFRAGMENT_process_fragment (session_light->macendpoint->defrag, | 2843 | GNUNET_DEFRAGMENT_process_fragment (session_light->macendpoint->defrag, |
2809 | hdr); | 2844 | hdr); |
@@ -2855,7 +2890,8 @@ wlan_data_helper (void *cls, struct Session_light *session_light, | |||
2855 | while (fm != NULL) | 2890 | while (fm != NULL) |
2856 | { | 2891 | { |
2857 | fm2 = fm->next; | 2892 | fm2 = fm->next; |
2858 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan acks received"), 1, GNUNET_NO); | 2893 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan acks received"), |
2894 | 1, GNUNET_NO); | ||
2859 | int ret = GNUNET_FRAGMENT_process_ack (fm->fragcontext, hdr); | 2895 | int ret = GNUNET_FRAGMENT_process_ack (fm->fragcontext, hdr); |
2860 | 2896 | ||
2861 | if (ret == GNUNET_OK) | 2897 | if (ret == GNUNET_OK) |
@@ -2947,8 +2983,9 @@ macendpoint_timeout (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) | |||
2947 | (GNUNET_TIME_absolute_add | 2983 | (GNUNET_TIME_absolute_add |
2948 | (endpoint->last_activity, MACENDPOINT_TIMEOUT)).rel_value == 0) | 2984 | (endpoint->last_activity, MACENDPOINT_TIMEOUT)).rel_value == 0) |
2949 | { | 2985 | { |
2950 | GNUNET_assert(endpoint->plugin != NULL); | 2986 | GNUNET_assert (endpoint->plugin != NULL); |
2951 | GNUNET_STATISTICS_update (endpoint->plugin->env->stats, _("# wlan mac endpoints timeouts"), 1, GNUNET_NO); | 2987 | GNUNET_STATISTICS_update (endpoint->plugin->env->stats, |
2988 | _("# wlan mac endpoints timeouts"), 1, GNUNET_NO); | ||
2952 | free_macendpoint (endpoint->plugin, endpoint); | 2989 | free_macendpoint (endpoint->plugin, endpoint); |
2953 | } | 2990 | } |
2954 | else | 2991 | else |
@@ -2970,8 +3007,9 @@ create_macendpoint (struct Plugin *plugin, const struct MacAddress *addr) | |||
2970 | { | 3007 | { |
2971 | struct MacEndpoint *newend = GNUNET_malloc (sizeof (struct MacEndpoint)); | 3008 | struct MacEndpoint *newend = GNUNET_malloc (sizeof (struct MacEndpoint)); |
2972 | 3009 | ||
2973 | GNUNET_assert(plugin != NULL); | 3010 | GNUNET_assert (plugin != NULL); |
2974 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan mac endpoints created"), 1, GNUNET_NO); | 3011 | GNUNET_STATISTICS_update (plugin->env->stats, |
3012 | _("# wlan mac endpoints created"), 1, GNUNET_NO); | ||
2975 | newend->addr = *addr; | 3013 | newend->addr = *addr; |
2976 | newend->plugin = plugin; | 3014 | newend->plugin = plugin; |
2977 | newend->addr = *addr; | 3015 | newend->addr = *addr; |
@@ -2987,7 +3025,8 @@ create_macendpoint (struct Plugin *plugin, const struct MacAddress *addr) | |||
2987 | newend); | 3025 | newend); |
2988 | 3026 | ||
2989 | plugin->mac_count++; | 3027 | plugin->mac_count++; |
2990 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan mac endpoints"), plugin->mac_count, GNUNET_NO); | 3028 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan mac endpoints"), |
3029 | plugin->mac_count, GNUNET_NO); | ||
2991 | GNUNET_CONTAINER_DLL_insert_tail (plugin->mac_head, plugin->mac_tail, newend); | 3030 | GNUNET_CONTAINER_DLL_insert_tail (plugin->mac_head, plugin->mac_tail, newend); |
2992 | #if DEBUG_wlan | 3031 | #if DEBUG_wlan |
2993 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 3032 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
@@ -3017,7 +3056,7 @@ wlan_process_helper (void *cls, void *client, | |||
3017 | int datasize = 0; | 3056 | int datasize = 0; |
3018 | int pos; | 3057 | int pos; |
3019 | 3058 | ||
3020 | GNUNET_assert(plugin != NULL); | 3059 | GNUNET_assert (plugin != NULL); |
3021 | switch (ntohs (hdr->type)) | 3060 | switch (ntohs (hdr->type)) |
3022 | { | 3061 | { |
3023 | case GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA: | 3062 | case GNUNET_MESSAGE_TYPE_WLAN_HELPER_DATA: |
@@ -3027,11 +3066,13 @@ wlan_process_helper (void *cls, void *client, | |||
3027 | ntohs (hdr->size)); | 3066 | ntohs (hdr->size)); |
3028 | #endif | 3067 | #endif |
3029 | 3068 | ||
3030 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan WLAN_HELPER_DATA received"), 1, GNUNET_NO); | 3069 | GNUNET_STATISTICS_update (plugin->env->stats, |
3070 | _("# wlan WLAN_HELPER_DATA received"), 1, | ||
3071 | GNUNET_NO); | ||
3031 | //call wlan_process_helper with the message inside, later with wlan: analyze signal | 3072 | //call wlan_process_helper with the message inside, later with wlan: analyze signal |
3032 | if (ntohs (hdr->size) < | 3073 | if (ntohs (hdr->size) < |
3033 | sizeof (struct ieee80211_frame) + 2*sizeof (struct GNUNET_MessageHeader) + | 3074 | sizeof (struct ieee80211_frame) + |
3034 | sizeof (struct Radiotap_rx)) | 3075 | 2 * sizeof (struct GNUNET_MessageHeader) + sizeof (struct Radiotap_rx)) |
3035 | { | 3076 | { |
3036 | #if DEBUG_wlan | 3077 | #if DEBUG_wlan |
3037 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 3078 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
@@ -3057,16 +3098,19 @@ wlan_process_helper (void *cls, void *client, | |||
3057 | { | 3098 | { |
3058 | //check for broadcast or mac | 3099 | //check for broadcast or mac |
3059 | if ((memcmp | 3100 | if ((memcmp |
3060 | (&(wlanIeeeHeader->i_addr1), &bc_all_mac, | 3101 | (&(wlanIeeeHeader->i_addr1), &bc_all_mac, |
3061 | sizeof (struct MacAddress)) == 0) || | 3102 | sizeof (struct MacAddress)) == 0) || |
3062 | (memcmp (&(wlanIeeeHeader->i_addr1), &(plugin->mac_address), | 3103 | (memcmp |
3063 | sizeof (struct MacAddress)) == 0)) | 3104 | (&(wlanIeeeHeader->i_addr1), &(plugin->mac_address), |
3105 | sizeof (struct MacAddress)) == 0)) | ||
3064 | { | 3106 | { |
3065 | //if packet is from us return | 3107 | //if packet is from us return |
3066 | if ((memcmp (&(wlanIeeeHeader->i_addr2), &(plugin->mac_address), | 3108 | if ((memcmp |
3067 | sizeof (struct MacAddress)) == 0)){ | 3109 | (&(wlanIeeeHeader->i_addr2), &(plugin->mac_address), |
3068 | return; | 3110 | sizeof (struct MacAddress)) == 0)) |
3069 | } | 3111 | { |
3112 | return; | ||
3113 | } | ||
3070 | // process the inner data | 3114 | // process the inner data |
3071 | 3115 | ||
3072 | 3116 | ||
@@ -3078,25 +3122,30 @@ wlan_process_helper (void *cls, void *client, | |||
3078 | memcpy (&session_light->addr, &(wlanIeeeHeader->i_addr2), | 3122 | memcpy (&session_light->addr, &(wlanIeeeHeader->i_addr2), |
3079 | sizeof (struct MacAddress)); | 3123 | sizeof (struct MacAddress)); |
3080 | //session_light->session = search_session(plugin,session_light->addr); | 3124 | //session_light->session = search_session(plugin,session_light->addr); |
3081 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messages for this client received"), 1, GNUNET_NO); | 3125 | GNUNET_STATISTICS_update (plugin->env->stats, |
3126 | _("# wlan messages for this client received"), | ||
3127 | 1, GNUNET_NO); | ||
3082 | 3128 | ||
3083 | pos = 0; | 3129 | pos = 0; |
3084 | while (pos < datasize) | 3130 | while (pos < datasize) |
3085 | { | 3131 | { |
3086 | temp_hdr = (struct GNUNET_MessageHeader *) &wlanIeeeHeader[1] + pos; | 3132 | temp_hdr = (struct GNUNET_MessageHeader *) &wlanIeeeHeader[1] + pos; |
3087 | if (ntohs(temp_hdr->size) <= datasize + pos) | 3133 | if (ntohs (temp_hdr->size) <= datasize + pos) |
3088 | { | 3134 | { |
3089 | GNUNET_STATISTICS_update (plugin->env->stats, _("# wlan messages inside WLAN_HELPER_DATA received"), 1, GNUNET_NO); | 3135 | GNUNET_STATISTICS_update (plugin->env->stats, |
3090 | wlan_data_helper (plugin, session_light, temp_hdr, rxinfo); | 3136 | _ |
3091 | } | 3137 | ("# wlan messages inside WLAN_HELPER_DATA received"), |
3138 | 1, GNUNET_NO); | ||
3139 | wlan_data_helper (plugin, session_light, temp_hdr, rxinfo); | ||
3140 | } | ||
3092 | else | 3141 | else |
3093 | { | 3142 | { |
3094 | #if DEBUG_wlan | 3143 | #if DEBUG_wlan |
3095 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 3144 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
3096 | "Size of packet is too small; size: %u > size of packet: %u\n", | 3145 | "Size of packet is too small; size: %u > size of packet: %u\n", |
3097 | ntohs(temp_hdr->size),datasize + pos); | 3146 | ntohs (temp_hdr->size), datasize + pos); |
3098 | #endif | 3147 | #endif |
3099 | } | 3148 | } |
3100 | pos += ntohs (temp_hdr->size); | 3149 | pos += ntohs (temp_hdr->size); |
3101 | 3150 | ||
3102 | } | 3151 | } |
@@ -3176,7 +3225,7 @@ libgnunet_plugin_transport_wlan_done (void *cls) | |||
3176 | "libgnunet_plugin_transport_wlan_done started\n"); | 3225 | "libgnunet_plugin_transport_wlan_done started\n"); |
3177 | #endif | 3226 | #endif |
3178 | 3227 | ||
3179 | wlan_transport_stop_wlan_helper(plugin); | 3228 | wlan_transport_stop_wlan_helper (plugin); |
3180 | 3229 | ||
3181 | GNUNET_assert (cls != NULL); | 3230 | GNUNET_assert (cls != NULL); |
3182 | //free sessions | 3231 | //free sessions |
@@ -3220,9 +3269,11 @@ libgnunet_plugin_transport_wlan_init (void *cls) | |||
3220 | plugin = GNUNET_malloc (sizeof (struct Plugin)); | 3269 | plugin = GNUNET_malloc (sizeof (struct Plugin)); |
3221 | plugin->env = env; | 3270 | plugin->env = env; |
3222 | plugin->pendingsessions = 0; | 3271 | plugin->pendingsessions = 0; |
3223 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan pending sessions"), plugin->pendingsessions, GNUNET_NO); | 3272 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan pending sessions"), |
3273 | plugin->pendingsessions, GNUNET_NO); | ||
3224 | plugin->mac_count = 0; | 3274 | plugin->mac_count = 0; |
3225 | GNUNET_STATISTICS_set(plugin->env->stats, _("# wlan mac endpoints"), plugin->mac_count, GNUNET_NO); | 3275 | GNUNET_STATISTICS_set (plugin->env->stats, _("# wlan mac endpoints"), |
3276 | plugin->mac_count, GNUNET_NO); | ||
3226 | plugin->server_write_task = GNUNET_SCHEDULER_NO_TASK; | 3277 | plugin->server_write_task = GNUNET_SCHEDULER_NO_TASK; |
3227 | plugin->server_read_task = GNUNET_SCHEDULER_NO_TASK; | 3278 | plugin->server_read_task = GNUNET_SCHEDULER_NO_TASK; |
3228 | plugin->server_write_delay_task = GNUNET_SCHEDULER_NO_TASK; | 3279 | plugin->server_write_delay_task = GNUNET_SCHEDULER_NO_TASK; |
@@ -3253,7 +3304,7 @@ libgnunet_plugin_transport_wlan_init (void *cls) | |||
3253 | if (GNUNET_SYSERR == | 3304 | if (GNUNET_SYSERR == |
3254 | GNUNET_CONFIGURATION_get_value_number (env->cfg, "transport-wlan", | 3305 | GNUNET_CONFIGURATION_get_value_number (env->cfg, "transport-wlan", |
3255 | "TESTMODE", &(plugin->testmode))) | 3306 | "TESTMODE", &(plugin->testmode))) |
3256 | plugin->testmode = 0; //default value | 3307 | plugin->testmode = 0; //default value |
3257 | } | 3308 | } |
3258 | 3309 | ||
3259 | if (GNUNET_CONFIGURATION_have_value (env->cfg, "transport-wlan", "INTERFACE")) | 3310 | if (GNUNET_CONFIGURATION_have_value (env->cfg, "transport-wlan", "INTERFACE")) |
@@ -3270,7 +3321,7 @@ libgnunet_plugin_transport_wlan_init (void *cls) | |||
3270 | //start the plugin | 3321 | //start the plugin |
3271 | wlan_transport_start_wlan_helper (plugin); | 3322 | wlan_transport_start_wlan_helper (plugin); |
3272 | set_next_beacon_time (plugin); | 3323 | set_next_beacon_time (plugin); |
3273 | set_next_send(plugin); | 3324 | set_next_send (plugin); |
3274 | #if DEBUG_wlan | 3325 | #if DEBUG_wlan |
3275 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, | 3326 | GNUNET_log_from (GNUNET_ERROR_TYPE_DEBUG, PLUGIN_LOG_NAME, |
3276 | "wlan init finished\n"); | 3327 | "wlan init finished\n"); |