projects
/
oweals
/
gnunet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Add missing file
[oweals/gnunet.git]
/
src
/
hello
/
address.c
diff --git
a/src/hello/address.c
b/src/hello/address.c
index b763414d2145bde418dbe27ec5a65af8d87f9944..9b7bb2019d3894cc394adfc44c009226cbe4121c 100644
(file)
--- a/
src/hello/address.c
+++ b/
src/hello/address.c
@@
-1,6
+1,6
@@
/*
This file is part of GNUnet.
/*
This file is part of GNUnet.
- (C) 2009 Christian Grothoff (and other contributing authors)
+
Copyright
(C) 2009 Christian Grothoff (and other contributing authors)
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
GNUnet is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published
@@
-14,8
+14,8
@@
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
You should have received a copy of the GNU General Public License
along with GNUnet; see the file COPYING. If not, write to the
- Free Software Foundation, Inc., 5
9 Temple Place - Suite 330
,
- Boston, MA 0211
1-1307
, USA.
+ Free Software Foundation, Inc., 5
1 Franklin Street, Fifth Floor
,
+ Boston, MA 0211
0-1301
, USA.
*/
/**
*/
/**
@@
-33,17
+33,18
@@
*
* @param address the address to check
* @param option the respective option to check for
*
* @param address the address to check
* @param option the respective option to check for
- * @return
GNUNET_YES or
GNUNET_NO
+ * @return
#GNUNET_YES or #
GNUNET_NO
*/
int
GNUNET_HELLO_address_check_option (const struct GNUNET_HELLO_Address * address,
*/
int
GNUNET_HELLO_address_check_option (const struct GNUNET_HELLO_Address * address,
- enum GNUNET_HELLO_AddressInfo option)
+
enum GNUNET_HELLO_AddressInfo option)
{
if (option == (address->local_info & option))
return GNUNET_YES;
return GNUNET_NO;
}
{
if (option == (address->local_info & option))
return GNUNET_YES;
return GNUNET_NO;
}
+
/**
* Get the size of an address struct.
*
/**
* Get the size of an address struct.
*
@@
-54,7
+55,7
@@
size_t
GNUNET_HELLO_address_get_size (const struct GNUNET_HELLO_Address * address)
{
return sizeof (struct GNUNET_HELLO_Address) + address->address_length +
GNUNET_HELLO_address_get_size (const struct GNUNET_HELLO_Address * address)
{
return sizeof (struct GNUNET_HELLO_Address) + address->address_length +
-
strlen (address->transport_name) + 1;
+ strlen (address->transport_name) + 1;
}
}
@@
-65,11
+66,13
@@
GNUNET_HELLO_address_get_size (const struct GNUNET_HELLO_Address * address)
* @param transport_name plugin name
* @param address binary address
* @param address_length number of bytes in 'address'
* @param transport_name plugin name
* @param address binary address
* @param address_length number of bytes in 'address'
+ * @param local_info additional local information for the address
* @return the address struct
*/
struct GNUNET_HELLO_Address *
GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer,
* @return the address struct
*/
struct GNUNET_HELLO_Address *
GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer,
- const char *transport_name, const void *address,
+ const char *transport_name,
+ const void *address,
size_t address_length,
enum GNUNET_HELLO_AddressInfo local_info)
{
size_t address_length,
enum GNUNET_HELLO_AddressInfo local_info)
{
@@
-77,20
+80,21
@@
GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer,
size_t slen;
char *end;
size_t slen;
char *end;
- GNUNET_assert (transport_name != NULL);
-
slen = strlen (transport_name) + 1;
slen = strlen (transport_name) + 1;
- addr =
- GNUNET_malloc (sizeof (struct GNUNET_HELLO_Address) + address_length +
- slen);
+ addr = GNUNET_malloc (sizeof (struct GNUNET_HELLO_Address) +
+ address_length + slen);
addr->peer = *peer;
addr->address = &addr[1];
addr->peer = *peer;
addr->address = &addr[1];
- end = (char *) &addr[1];
- memcpy (end, address, address_length);
addr->address_length = address_length;
addr->address_length = address_length;
- addr->transport_name = &end[address_length];
addr->local_info = local_info;
addr->local_info = local_info;
- memcpy (&end[address_length], transport_name, slen);
+ end = (char *) &addr[1];
+ addr->transport_name = &end[address_length];
+ memcpy (end,
+ address,
+ address_length);
+ memcpy (&end[address_length],
+ transport_name,
+ slen);
return addr;
}
return addr;
}
@@
-104,9
+108,13
@@
GNUNET_HELLO_address_allocate (const struct GNUNET_PeerIdentity *peer,
struct GNUNET_HELLO_Address *
GNUNET_HELLO_address_copy (const struct GNUNET_HELLO_Address *address)
{
struct GNUNET_HELLO_Address *
GNUNET_HELLO_address_copy (const struct GNUNET_HELLO_Address *address)
{
- return GNUNET_HELLO_address_allocate (&address->peer, address->transport_name,
+ if (NULL == address)
+ return NULL;
+ return GNUNET_HELLO_address_allocate (&address->peer,
+ address->transport_name,
address->address,
address->address,
- address->address_length, 0);
+ address->address_length,
+ address->local_info);
}
}
@@
-124,9
+132,18
@@
GNUNET_HELLO_address_cmp (const struct GNUNET_HELLO_Address *a1,
{
int ret;
{
int ret;
+ if ( (NULL == a1) &&
+ (NULL == a2) )
+ return 0;
+ if (NULL == a1)
+ return 1;
+ if (NULL == a2)
+ return -1;
ret = strcmp (a1->transport_name, a2->transport_name);
if (0 != ret)
return ret;
ret = strcmp (a1->transport_name, a2->transport_name);
if (0 != ret)
return ret;
+ if (a1->local_info != a2->local_info)
+ return ((int) a1->local_info) - ((int) a2->local_info);
if (a1->address_length < a2->address_length)
return -1;
if (a1->address_length > a2->address_length)
if (a1->address_length < a2->address_length)
return -1;
if (a1->address_length > a2->address_length)