summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/6to4.c5
-rw-r--r--src/connman.h2
-rw-r--r--src/inet.c8
-rw-r--r--src/network.c3
4 files changed, 11 insertions, 7 deletions
diff --git a/src/6to4.c b/src/6to4.c
index 0dfcbf76..7712ea3a 100644
--- a/src/6to4.c
+++ b/src/6to4.c
@@ -449,12 +449,13 @@ error:
return -1;
}
-static void receive_rs_reply(struct nd_router_advert *reply, void *user_data)
+static void receive_rs_reply(struct nd_router_advert *reply,
+ unsigned int length, void *user_data)
{
char *address = user_data;
struct in_addr ip4addr;
- DBG("reply %p address %s", reply, address);
+ DBG("reply %p len %d address %s", reply, length, address);
/* We try to create tunnel if autoconfiguration did not work i.e.,
* we did not receive any reply to router solicitation message.
diff --git a/src/connman.h b/src/connman.h
index ae242174..e42cbe11 100644
--- a/src/connman.h
+++ b/src/connman.h
@@ -137,7 +137,7 @@ int __connman_inet_modify_address(int cmd, int flags, int index, int family,
#include <netinet/icmp6.h>
typedef void (*__connman_inet_rs_cb_t) (struct nd_router_advert *reply,
- void *user_data);
+ unsigned int length, void *user_data);
int __connman_inet_ipv6_send_rs(int index, int timeout,
__connman_inet_rs_cb_t callback, void *user_data);
diff --git a/src/inet.c b/src/inet.c
index a2a66daa..a659ab0d 100644
--- a/src/inet.c
+++ b/src/inet.c
@@ -1456,7 +1456,7 @@ static gboolean rs_timeout_cb(gpointer user_data)
return FALSE;
if (data->callback != NULL)
- data->callback(NULL, data->user_data);
+ data->callback(NULL, 0, data->user_data);
data->rs_timeout = 0;
rs_cleanup(data);
@@ -1488,16 +1488,18 @@ static int icmpv6_recv(int fd, gpointer user_data)
len = recvmsg(fd, &mhdr, 0);
if (len < 0) {
- data->callback(NULL, data->user_data);
+ data->callback(NULL, 0, data->user_data);
rs_cleanup(data);
return -errno;
}
hdr = (struct nd_router_advert *)buf;
+ DBG("code %d len %zd hdr %zd", hdr->nd_ra_code, len,
+ sizeof(struct nd_router_advert));
if (hdr->nd_ra_code != 0)
return 0;
- data->callback(hdr, data->user_data);
+ data->callback(hdr, len, data->user_data);
rs_cleanup(data);
return len;
diff --git a/src/network.c b/src/network.c
index 6dee555b..e2266d01 100644
--- a/src/network.c
+++ b/src/network.c
@@ -982,7 +982,8 @@ static void dhcpv6_info_callback(struct connman_network *network,
stop_dhcpv6(network);
}
-static void check_dhcpv6(struct nd_router_advert *reply, void *user_data)
+static void check_dhcpv6(struct nd_router_advert *reply,
+ unsigned int length, void *user_data)
{
struct connman_network *network = user_data;