*/
struct IPv4UdpAddress
{
+ /**
+ * Optional options and flags for this address
+ */
+ uint32_t options GNUNET_PACKED;
+
/**
* IPv4 address, in network byte order.
*/
*/
struct IPv6UdpAddress
{
+ /**
+ * Optional options and flags for this address
+ */
+ uint32_t options GNUNET_PACKED;
/**
* IPv6 address.
* Session of peers with whom we are currently connected,
* map of peer identity to 'struct PeerSession'.
*/
- struct GNUNET_CONTAINER_MultiHashMap *sessions;
+ struct GNUNET_CONTAINER_MultiPeerMap *sessions;
/**
* Heap with all of our defragmentation activities.
*/
char *bind6_address;
+
+ /**
+ * Bytes currently in buffer
+ */
+ int64_t bytes_in_buffer;
+
/**
* Handle to NAT traversal support.
*/
struct GNUNET_NETWORK_FDSet *ws_v4;
- int with_v4_ws;
-
/**
* The read socket for IPv4
*/
*/
struct GNUNET_NETWORK_FDSet *ws_v6;
- int with_v6_ws;
-
/**
* The read socket for IPv6
*/
*/
struct GNUNET_TIME_Relative broadcast_interval;
- /**
- * Broadcast with IPv4
- */
- int broadcast_ipv4;
-
- /**
- * Broadcast with IPv6
- */
- int broadcast_ipv6;
-
-
/**
* Tokenizer for inbound messages.
*/
struct GNUNET_SERVER_MessageStreamTokenizer *broadcast_ipv4_mst;
/**
- * ID of select broadcast task
+ * IPv6 multicast address
*/
- GNUNET_SCHEDULER_TaskIdentifier send_ipv4_broadcast_task;
+ struct sockaddr_in6 ipv6_multicast_address;
/**
- * ID of select broadcast task
+ * DLL of broadcast addresses
*/
- GNUNET_SCHEDULER_TaskIdentifier send_ipv6_broadcast_task;
+ struct BroadcastAddress *broadcast_tail;
+ struct BroadcastAddress *broadcast_head;
/**
- * IPv6 multicast address
+ * Is IPv6 enabled: GNUNET_YES or GNUNET_NO
*/
- struct sockaddr_in6 ipv6_multicast_address;
+ int enable_ipv6;
/**
- * DLL of IPv4 broadcast addresses
+ * Is IPv4 enabled: GNUNET_YES or GNUNET_NO
*/
- struct BroadcastAddress *ipv4_broadcast_tail;
- struct BroadcastAddress *ipv4_broadcast_head;
+ int enable_ipv4;
/**
- * Enable IPv6
+ * Is broadcasting enabled: GNUNET_YES or GNUNET_NO
*/
- int enable_ipv6;
+ int enable_broadcasting;
+
+ /**
+ * Is receiving broadcasts enabled: GNUNET_YES or GNUNET_NO
+ */
+ int enable_broadcasting_receiving;
/**
* Port we broadcasting on.
*/
uint16_t aport;
- struct UDPMessageWrapper *ipv4_queue_head;
- struct UDPMessageWrapper *ipv4_queue_tail;
+ struct UDP_MessageWrapper *ipv4_queue_head;
+ struct UDP_MessageWrapper *ipv4_queue_tail;
- struct UDPMessageWrapper *ipv6_queue_head;
- struct UDPMessageWrapper *ipv6_queue_tail;
+ struct UDP_MessageWrapper *ipv6_queue_head;
+ struct UDP_MessageWrapper *ipv6_queue_tail;
};
udp_address_to_string (void *cls, const void *addr, size_t addrlen);
void
-udp_broadcast_receive ();
+udp_broadcast_receive (struct Plugin *plugin,
+ const char * buf,
+ ssize_t size,
+ const struct sockaddr *addr,
+ size_t addrlen);
void
-setup_broadcast (struct Plugin *plugin, struct sockaddr_in6 *serverAddrv6, struct sockaddr_in *serverAddrv4);
+setup_broadcast (struct Plugin *plugin,
+ struct sockaddr_in6 *server_addrv6,
+ struct sockaddr_in *server_addrv4);
void
stop_broadcast (struct Plugin *plugin);