Convert sizeof foo to sizeof(foo).
[tinc] / src / netutl.c
index 2eebb64..69714ea 100644 (file)
@@ -97,7 +97,7 @@ void sockaddr2str(const sockaddr_t *sa, char **addrstr, char **portstr) {
                return;
        }
 
-       err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof address, port, sizeof port, NI_NUMERICHOST | NI_NUMERICSERV);
+       err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof port, NI_NUMERICHOST | NI_NUMERICSERV);
 
        if(err) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Error while translating addresses: %s", err == EAI_SYSTEM ? strerror(errno) : gai_strerror(err));
@@ -129,7 +129,7 @@ char *sockaddr2hostname(const sockaddr_t *sa) {
                return str;
        }
 
-       err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof address, port, sizeof port,
+       err = getnameinfo(&sa->sa, SALEN(sa->sa), address, sizeof(address), port, sizeof port,
                                        hostnames ? 0 : (NI_NUMERICHOST | NI_NUMERICSERV));
        if(err) {
                logger(DEBUG_ALWAYS, LOG_ERR, "Error while looking up hostname: %s", err == EAI_SYSTEM ? strerror(errno) : gai_strerror(err));
@@ -189,20 +189,20 @@ int sockaddrcmp(const sockaddr_t *a, const sockaddr_t *b) {
                        return strcmp(a->unknown.port, b->unknown.port);
 
                case AF_INET:
-                       result = memcmp(&a->in.sin_addr, &b->in.sin_addr, sizeof a->in.sin_addr);
+                       result = memcmp(&a->in.sin_addr, &b->in.sin_addr, sizeof(a->in.sin_addr));
 
                        if(result)
                                return result;
 
-                       return memcmp(&a->in.sin_port, &b->in.sin_port, sizeof a->in.sin_port);
+                       return memcmp(&a->in.sin_port, &b->in.sin_port, sizeof(a->in.sin_port));
 
                case AF_INET6:
-                       result = memcmp(&a->in6.sin6_addr, &b->in6.sin6_addr, sizeof a->in6.sin6_addr);
+                       result = memcmp(&a->in6.sin6_addr, &b->in6.sin6_addr, sizeof(a->in6.sin6_addr));
 
                        if(result)
                                return result;
 
-                       return memcmp(&a->in6.sin6_port, &b->in6.sin6_port, sizeof a->in6.sin6_port);
+                       return memcmp(&a->in6.sin6_port, &b->in6.sin6_port, sizeof(a->in6.sin6_port));
 
                default:
                        logger(DEBUG_ALWAYS, LOG_ERR, "sockaddrcmp() was called with unknown address family %d, exitting!",
@@ -234,3 +234,22 @@ void sockaddrunmap(sockaddr_t *sa) {
                sa->in.sin_family = AF_INET;
        }
 }
+
+void sockaddr_setport(sockaddr_t *sa, const char *port) {
+       uint16_t portnum = htons(atoi(port));
+       if(!portnum)
+               return;
+       switch(sa->sa.sa_family) {
+               case AF_INET:
+                       sa->in.sin_port = portnum;
+                       break;
+               case AF_INET6:
+                       sa->in6.sin6_port = portnum;
+                       break;
+               case AF_UNKNOWN:
+                       free(sa->unknown.port);
+                       sa->unknown.port = xstrdup(port);
+               default:
+                       return;
+       }
+}