{
struct Plugin *plugin = cls;
struct Mstv6Context *mc = client;
+ struct GNUNET_HELLO_Address *address;
const struct GNUNET_MessageHeader *hello;
const struct UDP_Beacon_Message *msg;
struct GNUNET_ATS_Information atsi;
GNUNET_break (ntohl(mc->ats_address_network_type) != GNUNET_ATS_NET_UNSPECIFIED);
hello = (struct GNUNET_MessageHeader *) &msg[1];
- plugin->env->receive (plugin->env->cls,
- &msg->sender,
- hello,
- NULL,
- (const char *) &mc->addr,
- sizeof (mc->addr));
- plugin->env->update_address_metrics (plugin->env->cls,
- &msg->sender,
- (const char *) &mc->addr,
- sizeof (mc->addr),
- NULL,
- &atsi, 1);
-
+ address = GNUNET_HELLO_address_allocate (&msg->sender, PLUGIN_NAME,
+ (const char *) &mc->addr, sizeof (mc->addr), GNUNET_HELLO_ADDRESS_INFO_INBOUND);
+ plugin->env->receive (plugin->env->cls, address, NULL, hello);
+ plugin->env->update_address_metrics (plugin->env->cls, address,
+ NULL, &atsi, 1);
+ GNUNET_HELLO_address_free (address);
GNUNET_STATISTICS_update (plugin->env->stats,
_
("# IPv6 multicast HELLO beacons received via udp"),
{
struct Plugin *plugin = cls;
struct Mstv4Context *mc = client;
+ struct GNUNET_HELLO_Address *address;
const struct GNUNET_MessageHeader *hello;
const struct UDP_Beacon_Message *msg;
struct GNUNET_ATS_Information atsi;
GNUNET_break (ntohl(mc->ats_address_network_type) != GNUNET_ATS_NET_UNSPECIFIED);
hello = (struct GNUNET_MessageHeader *) &msg[1];
- plugin->env->receive (plugin->env->cls,
- &msg->sender,
- hello,
- NULL,
- (const char *) &mc->addr,
- sizeof (mc->addr));
-
- plugin->env->update_address_metrics (plugin->env->cls,
- &msg->sender,
- (const char *) &mc->addr,
- sizeof (mc->addr),
- NULL,
- &atsi, 1);
+ address = GNUNET_HELLO_address_allocate (&msg->sender, PLUGIN_NAME,
+ (const char *) &mc->addr, sizeof (mc->addr), GNUNET_HELLO_ADDRESS_INFO_INBOUND);
+ plugin->env->receive (plugin->env->cls, address, NULL, hello);
+ plugin->env->update_address_metrics (plugin->env->cls, address,
+ NULL, &atsi, 1);
+ GNUNET_HELLO_address_free (address);
GNUNET_STATISTICS_update (plugin->env->stats,
_("# IPv4 broadcast HELLO beacons received via udp"),
void
udp_broadcast_receive (struct Plugin *plugin,
- const char * buf,
+ const char *buf,
ssize_t size,
const struct sockaddr *addr,
size_t addrlen)
size, GNUNET_a2s ((const struct sockaddr *) addr, addrlen));
struct Mstv4Context *mc;
- mc = GNUNET_malloc (sizeof (struct Mstv4Context));
+ mc = GNUNET_new (struct Mstv4Context);
struct sockaddr_in *av4 = (struct sockaddr_in *) addr;
mc->addr.ipv4_addr = av4->sin_addr.s_addr;
size, GNUNET_a2s ((const struct sockaddr *) &addr, addrlen));
struct Mstv6Context *mc;
- mc = GNUNET_malloc (sizeof (struct Mstv6Context));
+ mc = GNUNET_new (struct Mstv6Context);
struct sockaddr_in6 *av6 = (struct sockaddr_in6 *) addr;
mc->addr.ipv6_addr = av6->sin6_addr;
{
struct Plugin *plugin = cls;
struct BroadcastAddress *ba;
+ struct GNUNET_ATS_Information network;
if (NULL == addr)
return GNUNET_OK;
GNUNET_log (GNUNET_ERROR_TYPE_DEBUG, "netmask %s for interface %s %p\n ",
GNUNET_a2s (netmask, addrlen), name, netmask);
+ network = plugin->env->get_address_type (plugin->env->cls, broadcast_addr, addrlen);
+ if (GNUNET_ATS_NET_LOOPBACK == ntohl(network.value))
+ {
+ /* Broadcasting on loopback does not make sense */
+ return GNUNET_YES;
+ }
+
ba = GNUNET_new (struct BroadcastAddress);
ba->plugin = plugin;
ba->addr = GNUNET_malloc (addrlen);
memcpy (ba->addr, broadcast_addr, addrlen);
ba->addrlen = addrlen;
+
if ( (GNUNET_YES == plugin->enable_ipv4) &&
(NULL != plugin->sockv4) &&
(addrlen == sizeof (struct sockaddr_in)) )
char *filename;
GNUNET_asprintf (&filename,
- "/dev/power/%s",
+ "/dev/cryogenic/%s",
name);
if (0 == ACCESS (name, R_OK))
{
char *filename;
GNUNET_asprintf (&filename,
- "/dev/power/%s",
+ "/dev/cryogenic/%s",
name);
if (0 == ACCESS (name, R_OK))
{
(plugin->sockv6, IPPROTO_IPV6, IPV6_LEAVE_GROUP,
&multicastRequest, sizeof (multicastRequest)))
{
- GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, setsockopt);
+ GNUNET_log_strerror (GNUNET_ERROR_TYPE_ERROR, "setsockopt");
}
else
{