Replace asprintf() by xasprintf().
[tinc] / src / netutl.c
index 6386e4c..909441e 100644 (file)
@@ -128,7 +128,7 @@ char *sockaddr2hostname(const sockaddr_t *sa)
        cp();
 
        if(sa->sa.sa_family == AF_UNKNOWN) {
-               asprintf(&str, _("%s port %s"), sa->unknown.address, sa->unknown.port);
+               xasprintf(&str, _("%s port %s"), sa->unknown.address, sa->unknown.port);
                return str;
        }
 
@@ -139,11 +139,44 @@ char *sockaddr2hostname(const sockaddr_t *sa)
                           gai_strerror(err));
        }
 
-       asprintf(&str, _("%s port %s"), address, port);
+       xasprintf(&str, _("%s port %s"), address, port);
 
        return str;
 }
 
+int sockaddrcmp_noport(const sockaddr_t *a, const sockaddr_t *b)
+{
+       int result;
+
+       cp();
+
+       result = a->sa.sa_family - b->sa.sa_family;
+
+       if(result)
+               return result;
+
+       switch (a->sa.sa_family) {
+               case AF_UNSPEC:
+                       return 0;
+
+               case AF_UNKNOWN:
+                       return strcmp(a->unknown.address, b->unknown.address);
+
+               case AF_INET:
+                       return memcmp(&a->in.sin_addr, &b->in.sin_addr, sizeof(a->in.sin_addr));
+
+               case AF_INET6:
+                       return memcmp(&a->in6.sin6_addr, &b->in6.sin6_addr, sizeof(a->in6.sin6_addr));
+
+               default:
+                       logger(LOG_ERR, _("sockaddrcmp() was called with unknown address family %d, exitting!"),
+                                  a->sa.sa_family);
+                       cp_trace();
+                       raise(SIGFPE);
+                       exit(0);
+       }
+}
+
 int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b)
 {
        int result;
@@ -225,7 +258,7 @@ void sockaddrunmap(sockaddr_t *sa)
 
 /* Subnet mask handling */
 
-int maskcmp(const void *va, const void *vb, int masklen, int len)
+int maskcmp(const void *va, const void *vb, int masklen)
 {
        int i, m, result;
        const char *a = va;