sockaddr_compare should really be ipaddr_compare
Signed-off-by: Erik Boasson <eb@ilities.com>
This commit is contained in:
		
							parent
							
								
									f2f436bde3
								
							
						
					
					
						commit
						b34cbdcf0c
					
				
					 5 changed files with 39 additions and 23 deletions
				
			
		| 
						 | 
				
			
			@ -16,6 +16,7 @@
 | 
			
		|||
 | 
			
		||||
enum ddsi_nearby_address_result ddsi_ipaddr_is_nearby_address (ddsi_tran_factory_t tran, const nn_locator_t *loc, size_t ninterf, const struct nn_interface interf[]);
 | 
			
		||||
enum ddsi_locator_from_string_result ddsi_ipaddr_from_string (ddsi_tran_factory_t tran, nn_locator_t *loc, const char *str, int32_t kind);
 | 
			
		||||
int ddsi_ipaddr_compare (const os_sockaddr *const sa1, const os_sockaddr *const sa2);
 | 
			
		||||
char *ddsi_ipaddr_to_string (ddsi_tran_factory_t tran, char *dst, size_t sizeof_dst, const nn_locator_t *loc, int with_port);
 | 
			
		||||
void ddsi_ipaddr_to_loc (nn_locator_t *dst, const os_sockaddr *src, int32_t kind);
 | 
			
		||||
void ddsi_ipaddr_from_loc (os_sockaddr_storage *dst, const nn_locator_t *src);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -16,6 +16,40 @@
 | 
			
		|||
#include "ddsi/q_nwif.h"
 | 
			
		||||
#include "ddsi/q_config.h"
 | 
			
		||||
 | 
			
		||||
int ddsi_ipaddr_compare (const os_sockaddr *const sa1, const os_sockaddr *const sa2)
 | 
			
		||||
{
 | 
			
		||||
  int eq;
 | 
			
		||||
  size_t sz;
 | 
			
		||||
 | 
			
		||||
  if ((eq = sa1->sa_family - sa2->sa_family) == 0) {
 | 
			
		||||
    switch(sa1->sa_family) {
 | 
			
		||||
#if (OS_SOCKET_HAS_IPV6 == 1)
 | 
			
		||||
      case AF_INET6: {
 | 
			
		||||
        os_sockaddr_in6 *sin61, *sin62;
 | 
			
		||||
        sin61 = (os_sockaddr_in6 *)sa1;
 | 
			
		||||
        sin62 = (os_sockaddr_in6 *)sa2;
 | 
			
		||||
        sz = sizeof(sin61->sin6_addr);
 | 
			
		||||
        eq = memcmp(&sin61->sin6_addr, &sin62->sin6_addr, sz);
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
#endif /* OS_SOCKET_HAS_IPV6 */
 | 
			
		||||
      case AF_INET: {
 | 
			
		||||
        os_sockaddr_in *sin1, *sin2;
 | 
			
		||||
        sin1 = (os_sockaddr_in *)sa1;
 | 
			
		||||
        sin2 = (os_sockaddr_in *)sa2;
 | 
			
		||||
        sz = sizeof(sin1->sin_addr);
 | 
			
		||||
        eq = memcmp(&sin1->sin_addr, &sin2->sin_addr, sizeof(sz));
 | 
			
		||||
        break;
 | 
			
		||||
      }
 | 
			
		||||
      default: {
 | 
			
		||||
        assert(0);
 | 
			
		||||
      }
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  return eq;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
enum ddsi_nearby_address_result ddsi_ipaddr_is_nearby_address (ddsi_tran_factory_t tran, const nn_locator_t *loc, size_t ninterf, const struct nn_interface interf[])
 | 
			
		||||
{
 | 
			
		||||
  os_sockaddr_storage tmp, iftmp, nmtmp, ownip;
 | 
			
		||||
| 
						 | 
				
			
			@ -29,7 +63,7 @@ enum ddsi_nearby_address_result ddsi_ipaddr_is_nearby_address (ddsi_tran_factory
 | 
			
		|||
    ddsi_ipaddr_from_loc(&ownip, &gv.ownloc);
 | 
			
		||||
    if (os_sockaddrSameSubnet ((os_sockaddr *) &tmp, (os_sockaddr *) &iftmp, (os_sockaddr *) &nmtmp))
 | 
			
		||||
    {
 | 
			
		||||
      if (os_sockaddr_compare((os_sockaddr *)&iftmp, (os_sockaddr *)&ownip) == 0)
 | 
			
		||||
      if (ddsi_ipaddr_compare((os_sockaddr *)&iftmp, (os_sockaddr *)&ownip) == 0)
 | 
			
		||||
        return DNAR_SAME;
 | 
			
		||||
      else
 | 
			
		||||
        return DNAR_LOCAL;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -91,8 +91,7 @@ static int ddsi_tcp_cmp_conn (const ddsi_tcp_conn_t c1, const ddsi_tcp_conn_t c2
 | 
			
		|||
   return (a1s->sa_family < a2s->sa_family) ? -1 : 1;
 | 
			
		||||
  else if (c1->m_peer_port != c2->m_peer_port)
 | 
			
		||||
    return (c1->m_peer_port < c2->m_peer_port) ? -1 : 1;
 | 
			
		||||
 | 
			
		||||
  return os_sockaddr_compare(a1s, a2s);
 | 
			
		||||
  return ddsi_ipaddr_compare (a1s, a2s);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
typedef struct ddsi_tcp_node
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue