diff options
Diffstat (limited to 'src/nt/nt.c')
-rw-r--r-- | src/nt/nt.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/src/nt/nt.c b/src/nt/nt.c index 3b95738e8..45d24520f 100644 --- a/src/nt/nt.c +++ b/src/nt/nt.c | |||
@@ -200,15 +200,21 @@ interface_proc (void *cls, | |||
200 | net->netmask = (struct sockaddr *) &tmp[1]; | 200 | net->netmask = (struct sockaddr *) &tmp[1]; |
201 | net->length = addrlen; | 201 | net->length = addrlen; |
202 | 202 | ||
203 | memset (&network4, 0, sizeof (network4)); | 203 | memset (&network4, |
204 | 0, | ||
205 | sizeof (network4)); | ||
204 | network4.sin_family = AF_INET; | 206 | network4.sin_family = AF_INET; |
205 | #if HAVE_SOCKADDR_IN_SIN_LEN | 207 | #if HAVE_SOCKADDR_IN_SIN_LEN |
206 | network4.sin_len = sizeof (network4); | 208 | network4.sin_len = sizeof (network4); |
207 | #endif | 209 | #endif |
208 | network4.sin_addr.s_addr = (addr4->sin_addr.s_addr & netmask4->sin_addr.s_addr); | 210 | network4.sin_addr.s_addr = (addr4->sin_addr.s_addr & netmask4->sin_addr.s_addr); |
209 | 211 | ||
210 | GNUNET_memcpy (net->netmask, netmask4, sizeof (struct sockaddr_in)); | 212 | GNUNET_memcpy (net->netmask, |
211 | GNUNET_memcpy (net->network, &network4, sizeof (struct sockaddr_in)); | 213 | netmask4, |
214 | sizeof (struct sockaddr_in)); | ||
215 | GNUNET_memcpy (net->network, | ||
216 | &network4, | ||
217 | sizeof (struct sockaddr_in)); | ||
212 | } | 218 | } |
213 | 219 | ||
214 | if (addr->sa_family == AF_INET6) | 220 | if (addr->sa_family == AF_INET6) |
@@ -236,8 +242,12 @@ interface_proc (void *cls, | |||
236 | for (c = 0; c < 4; c++) | 242 | for (c = 0; c < 4; c++) |
237 | net_elem[c] = addr_elem[c] & mask_elem[c]; | 243 | net_elem[c] = addr_elem[c] & mask_elem[c]; |
238 | 244 | ||
239 | GNUNET_memcpy (net->netmask, netmask6, sizeof (struct sockaddr_in6)); | 245 | GNUNET_memcpy (net->netmask, |
240 | GNUNET_memcpy (net->network, &network6, sizeof (struct sockaddr_in6)); | 246 | netmask6, |
247 | sizeof (struct sockaddr_in6)); | ||
248 | GNUNET_memcpy (net->network, | ||
249 | &network6, | ||
250 | sizeof (struct sockaddr_in6)); | ||
241 | } | 251 | } |
242 | if (NULL == net) | 252 | if (NULL == net) |
243 | return GNUNET_OK; /* odd / unsupported address family */ | 253 | return GNUNET_OK; /* odd / unsupported address family */ |
@@ -291,8 +301,8 @@ get_addresses (void *cls) | |||
291 | */ | 301 | */ |
292 | enum GNUNET_NetworkType | 302 | enum GNUNET_NetworkType |
293 | GNUNET_NT_scanner_get_type (struct GNUNET_NT_InterfaceScanner *is, | 303 | GNUNET_NT_scanner_get_type (struct GNUNET_NT_InterfaceScanner *is, |
294 | const struct sockaddr *addr, | 304 | const struct sockaddr *addr, |
295 | socklen_t addrlen) | 305 | socklen_t addrlen) |
296 | { | 306 | { |
297 | struct NT_Network *cur = is->net_head; | 307 | struct NT_Network *cur = is->net_head; |
298 | enum GNUNET_NetworkType type = GNUNET_NT_UNSPECIFIED; | 308 | enum GNUNET_NetworkType type = GNUNET_NT_UNSPECIFIED; |