curly wars / auto-indentation
[oweals/gnunet.git] / src / vpn / gnunet-daemon-vpn.c
index fbbffc9a125bd9512b4970d5779e8a9e16c22297..cc8001eae412119f28ab7389e5e26f443e17b2b4 100644 (file)
@@ -183,7 +183,7 @@ collect_mappings (void *cls
   /* FIXME! GNUNET_MESH_close_tunnel(me->tunnel); */
 
   GNUNET_assert (GNUNET_YES ==
-                GNUNET_CONTAINER_multihashmap_remove (hashmap, &me->hash, me));
+                 GNUNET_CONTAINER_multihashmap_remove (hashmap, &me->hash, me));
 
   GNUNET_free (me);
 }
@@ -282,38 +282,33 @@ send_pkt_to_peer_notify_callback (void *cls, size_t size, void *buf)
 {
   struct GNUNET_MESH_Tunnel **tunnel = cls;
 
-  GNUNET_MESH_tunnel_set_data (*tunnel, NULL);
+  struct tunnel_state *ts = GNUNET_MESH_tunnel_get_data (*tunnel);
+
+  ts->th = NULL;
 
   if (NULL != buf)
-    {
-      struct GNUNET_MessageHeader *hdr =
+  {
+    struct GNUNET_MessageHeader *hdr =
         (struct GNUNET_MessageHeader *) (tunnel + 1);
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
-                  "send_pkt_to_peer_notify_callback: buf = %x; size = %u;\n", buf,
-                  size);
-      GNUNET_assert (size >= ntohs (hdr->size));
-      memcpy (buf, hdr, ntohs (hdr->size));
-      size = ntohs (hdr->size);
-      GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sent!\n");
-    }
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+                "send_pkt_to_peer_notify_callback: buf = %x; size = %u;\n", buf,
+                size);
+    GNUNET_assert (size >= ntohs (hdr->size));
+    memcpy (buf, hdr, ntohs (hdr->size));
+    size = ntohs (hdr->size);
+    GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "Sent!\n");
+  }
   else
     size = 0;
 
-  if (NULL != GNUNET_MESH_tunnel_get_head (*tunnel))
+  if (NULL != ts->head)
   {
-    struct tunnel_notify_queue *element = GNUNET_MESH_tunnel_get_head (*tunnel);
-    struct tunnel_notify_queue *head = GNUNET_MESH_tunnel_get_head (*tunnel);
-    struct tunnel_notify_queue *tail = GNUNET_MESH_tunnel_get_tail (*tunnel);
-
-    GNUNET_CONTAINER_DLL_remove (head, tail, element);
+    struct tunnel_notify_queue *element = ts->head;
 
-    GNUNET_MESH_tunnel_set_head (*tunnel, head);
-    GNUNET_MESH_tunnel_set_tail (*tunnel, tail);
+    GNUNET_CONTAINER_DLL_remove (ts->head, ts->tail, element);
 
-    struct GNUNET_MESH_TransmitHandle *th =
-        GNUNET_MESH_notify_transmit_ready (*tunnel,
-                                           GNUNET_NO,
-                                           42,
+    ts->th =
+        GNUNET_MESH_notify_transmit_ready (*tunnel, GNUNET_NO, 42,
                                            GNUNET_TIME_relative_divide
                                            (GNUNET_CONSTANTS_MAX_CORK_DELAY, 2),
                                            (const struct GNUNET_PeerIdentity *)
@@ -322,7 +317,6 @@ send_pkt_to_peer_notify_callback (void *cls, size_t size, void *buf)
                                            element->cls);
 
     /* save the handle */
-    GNUNET_MESH_tunnel_set_data (*tunnel, th);
     GNUNET_free (element);
   }
   GNUNET_free (cls);
@@ -335,12 +329,13 @@ port_in_ports (uint64_t ports, uint16_t port)
 {
   uint16_t *ps = (uint16_t *) & ports;
 
-  return ports == 0 || ps[0] == port || ps[1] == port || ps[2] == port || ps[3] == port;
+  return ports == 0 || ps[0] == port || ps[1] == port || ps[2] == port ||
+      ps[3] == port;
 }
 
 void
 send_pkt_to_peer (void *cls, const struct GNUNET_PeerIdentity *peer,
-                  const struct GNUNET_TRANSPORT_ATS_Information *atsi
+                  const struct GNUNET_ATS_Information *atsi
                   __attribute__ ((unused)))
 {
   /* peer == NULL means that all peers in this request are connected */
@@ -353,35 +348,27 @@ send_pkt_to_peer (void *cls, const struct GNUNET_PeerIdentity *peer,
   GNUNET_assert (NULL != tunnel);
   GNUNET_assert (NULL != *tunnel);
 
-  if (NULL == GNUNET_MESH_tunnel_get_data (*tunnel))
+  struct tunnel_state *ts = GNUNET_MESH_tunnel_get_data (*tunnel);
+
+  if (NULL == ts->th)
   {
-    struct GNUNET_MESH_TransmitHandle *th =
-        GNUNET_MESH_notify_transmit_ready (*tunnel,
-                                           GNUNET_NO,
-                                           42,
+    ts->th =
+        GNUNET_MESH_notify_transmit_ready (*tunnel, GNUNET_NO, 42,
                                            GNUNET_TIME_relative_divide
                                            (GNUNET_CONSTANTS_MAX_CORK_DELAY, 2),
                                            (const struct GNUNET_PeerIdentity *)
-                                           NULL,
-                                           ntohs (hdr->size),
+                                           NULL, ntohs (hdr->size),
                                            send_pkt_to_peer_notify_callback,
                                            cls);
-
-    GNUNET_MESH_tunnel_set_data (*tunnel, th);
   }
   else
   {
-    struct tunnel_notify_queue *head = GNUNET_MESH_tunnel_get_head (*tunnel);
-    struct tunnel_notify_queue *tail = GNUNET_MESH_tunnel_get_tail (*tunnel);
     struct tunnel_notify_queue *element = GNUNET_malloc (sizeof *element);
 
     element->cls = cls;
     element->len = ntohs (hdr->size);
 
-    GNUNET_CONTAINER_DLL_insert_tail (head, tail, element);
-
-    GNUNET_MESH_tunnel_set_head (*tunnel, head);
-    GNUNET_MESH_tunnel_set_tail (*tunnel, tail);
+    GNUNET_CONTAINER_DLL_insert_tail (ts->head, ts->tail, element);
   }
 }
 
@@ -586,7 +573,8 @@ process_answer (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 
     list =
         GNUNET_malloc (htons (pkt->hdr.size) +
-                       2 * sizeof (struct answer_packet_list *));
+                       sizeof (struct answer_packet_list) -
+                       sizeof (struct answer_packet));
 
     memcpy (&list->pkt, pkt, htons (pkt->hdr.size));
 
@@ -634,7 +622,8 @@ process_answer (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
     char *name = (char *) (map_entry + 1);
 
     list =
-        GNUNET_malloc (2 * sizeof (struct answer_packet_list *) + offset + 2 +
+        GNUNET_malloc (sizeof (struct answer_packet_list) -
+                       sizeof (struct answer_packet) + offset + 2 +
                        ntohs (namelen));
 
     struct answer_packet *rpkt = &list->pkt;
@@ -653,7 +642,8 @@ process_answer (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
   {
     list =
         GNUNET_malloc (htons (pkt->hdr.size) +
-                       2 * sizeof (struct answer_packet_list *));
+                       sizeof (struct answer_packet_list) -
+                       sizeof (struct answer_packet));
     memcpy (&list->pkt, pkt, htons (pkt->hdr.size));
   }
   else if (pkt->subtype == GNUNET_DNS_ANSWER_TYPE_REMOTE_AAAA)
@@ -713,7 +703,8 @@ process_answer (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 
     list =
         GNUNET_malloc (htons (pkt->hdr.size) +
-                       2 * sizeof (struct answer_packet_list *));
+                       sizeof (struct answer_packet_list) -
+                       sizeof (struct answer_packet));
 
     memcpy (&list->pkt, pkt, htons (pkt->hdr.size));
   }
@@ -775,7 +766,8 @@ process_answer (void *cls, const struct GNUNET_SCHEDULER_TaskContext *tc)
 
     list =
         GNUNET_malloc (htons (pkt->hdr.size) +
-                       2 * sizeof (struct answer_packet_list *));
+                       sizeof (struct answer_packet_list) -
+                       sizeof (struct answer_packet));
 
     memcpy (&list->pkt, pkt, htons (pkt->hdr.size));
   }
@@ -866,20 +858,18 @@ add_additional_port (struct map_entry *me, uint16_t port)
 static int
 receive_udp_back (void *cls
                   __attribute__ ((unused)), struct GNUNET_MESH_Tunnel *tunnel,
-                  void **tunnel_ctx
-                  __attribute__ ((unused)),
-                  const struct GNUNET_PeerIdentity *sender
-                  __attribute__ ((unused)),
+                  void **tunnel_ctx, const struct GNUNET_PeerIdentity *sender,
                   const struct GNUNET_MessageHeader *message,
-                  const struct GNUNET_TRANSPORT_ATS_Information *atsi
+                  const struct GNUNET_ATS_Information *atsi
                   __attribute__ ((unused)))
 {
   GNUNET_HashCode *desc = (GNUNET_HashCode *) (message + 1);
   struct remote_addr *s = (struct remote_addr *) desc;
   struct udp_pkt *pkt = (struct udp_pkt *) (desc + 1);
-  const struct GNUNET_PeerIdentity *other = GNUNET_MESH_get_peer (tunnel);
+  const struct GNUNET_PeerIdentity *other = sender;
+  struct tunnel_state *ts = *tunnel_ctx;
 
-  if (16 == s->addrlen)
+  if (16 == ts->addrlen)
   {
     size_t size =
         sizeof (struct ip6_udp) + ntohs (pkt->len) - 1 -
@@ -1045,27 +1035,27 @@ receive_udp_back (void *cls
 static int
 receive_tcp_back (void *cls
                   __attribute__ ((unused)), struct GNUNET_MESH_Tunnel *tunnel,
-                  void **tunnel_ctx
-                  __attribute__ ((unused)),
-                  const struct GNUNET_PeerIdentity *sender
+                  void **tunnel_ctx, const struct GNUNET_PeerIdentity *sender
                   __attribute__ ((unused)),
                   const struct GNUNET_MessageHeader *message,
-                  const struct GNUNET_TRANSPORT_ATS_Information *atsi
+                  const struct GNUNET_ATS_Information *atsi
                   __attribute__ ((unused)))
 {
   GNUNET_HashCode *desc = (GNUNET_HashCode *) (message + 1);
   struct remote_addr *s = (struct remote_addr *) desc;
   struct tcp_pkt *pkt = (struct tcp_pkt *) (desc + 1);
-  const struct GNUNET_PeerIdentity *other = GNUNET_MESH_get_peer (tunnel);
+  const struct GNUNET_PeerIdentity *other = sender;
+  struct tunnel_state *ts = *tunnel_ctx;
 
   size_t pktlen =
       ntohs (message->size) - sizeof (struct GNUNET_MessageHeader) -
       sizeof (GNUNET_HashCode);
 
-  GNUNET_log(GNUNET_ERROR_TYPE_DEBUG, "Received TCP-Packet back, addrlen = %d\n", s->addrlen);
+  GNUNET_log (GNUNET_ERROR_TYPE_DEBUG,
+              "Received TCP-Packet back, addrlen = %d\n", s->addrlen);
 
-  if (ntohs(message->type) == GNUNET_MESSAGE_TYPE_VPN_SERVICE_TCP_BACK ||
-      s->addrlen == 16)
+  if (ntohs (message->type) == GNUNET_MESSAGE_TYPE_VPN_SERVICE_TCP_BACK ||
+      ts->addrlen == 16)
   {
     size_t size = pktlen + sizeof (struct ip6_tcp) - 1;
 
@@ -1211,7 +1201,7 @@ receive_tcp_back (void *cls
     tmp = pkt4->ip_hdr.dadr;
     sum = calculate_checksum_update (sum, (uint16_t *) & tmp, 4);
 
-    tmp = (0x06 << 16) | (0xffff & pktlen); // 0x06 for TCP?
+    tmp = (0x06 << 16) | (0xffff & pktlen);     // 0x06 for TCP?
 
     tmp = htonl (tmp);
 
@@ -1229,6 +1219,23 @@ receive_tcp_back (void *cls
   return GNUNET_OK;
 }
 
+static void *
+new_tunnel (void *cls, struct GNUNET_MESH_Tunnel *tunnel,
+            const struct GNUNET_PeerIdentity *initiator,
+            const struct GNUNET_ATS_Information *atsi)
+{
+  /* Why should anyone open an inbound tunnel to vpn? */
+  GNUNET_break (0);
+  return NULL;
+}
+
+static void
+cleaner (void *cls, const struct GNUNET_MESH_Tunnel *tunnel, void *tunnel_ctx)
+{
+  /* Why should anyone open an inbound tunnel to vpn? */
+  GNUNET_break (0);
+}
+
 /**
  * Main function that will be run by the scheduler.
  *
@@ -1253,7 +1260,9 @@ run (void *cls, char *const *args __attribute__ ((unused)), const char *cfgfilep
     GNUNET_APPLICATION_TYPE_END
   };
 
-  mesh_handle = GNUNET_MESH_connect (cfg_, NULL, NULL, handlers, types);
+  mesh_handle =
+      GNUNET_MESH_connect (cfg_, 42, NULL, new_tunnel, cleaner, handlers,
+                           types);
   cfg = cfg_;
   restart_hijack = 0;
   hashmap = GNUNET_CONTAINER_multihashmap_create (65536);