aboutsummaryrefslogtreecommitdiff
path: root/src/transport/plugin_transport_wlan.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/transport/plugin_transport_wlan.c')
-rw-r--r--src/transport/plugin_transport_wlan.c413
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
1632wlan_transport_stop_wlan_helper (struct Plugin *plugin) 1646wlan_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 */
1709static void 1724static void
1710restart_helper(struct Plugin *plugin, struct Finish_send *finish) 1725restart_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
2067do_transmit (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc) 2086do_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");