]> git.ipfire.org Git - people/ms/network.git/blobdiff - src/inetcalc.c
dns: Always enable EDNS0
[people/ms/network.git] / src / inetcalc.c
index 7695702178861281ab01829542f26e3e50fefb6c..1841c84065975b7e9beff194f8a67bc81118d12a 100644 (file)
@@ -28,6 +28,8 @@
 #include <string.h>
 #include <sys/socket.h>
 
+#include <network/libnetwork.h>
+
 typedef struct ip_address {
        int family;
        struct in6_addr addr;
@@ -206,10 +208,8 @@ static int ip_address_gt(const ip_address_t* a1, const ip_address_t* a2) {
        if (a1->family != a2->family || a1->prefix != a2->prefix)
                return -1;
 
-       for (unsigned int i = 0; i < 4; i++) {
-               if (a1->addr.s6_addr[i] > a2->addr.s6_addr[i])
-                       return 0;
-       }
+       if (memcmp(&a1->addr.s6_addr, &a2->addr.s6_addr, sizeof(a1->addr.s6_addr)) > 0)
+               return 0;
 
        return 1;
 }
@@ -247,7 +247,10 @@ static void ip_address_print(const ip_address_t* ip) {
        if (r)
                return;
 
-       if (ip->prefix >= 0) {
+       int address_prefix = default_prefix(ip->family);
+
+       // Only print prefix when it is not the default one
+       if (ip->prefix != address_prefix) {
                size_t len = strlen(buffer);
                snprintf(buffer + len, sizeof(buffer) - len, "/%d", ip->prefix);
        }
@@ -512,7 +515,7 @@ int main(int argc, char** argv) {
        int family = AF_UNSPEC;
 
        while (1) {
-               int c = getopt_long(argc, argv, "46bcefgnpsv", long_options, &option_index);
+               int c = getopt_long(argc, argv, "46bcefgnpsviV", long_options, &option_index);
                if (c == -1)
                        break;
 
@@ -579,6 +582,11 @@ int main(int argc, char** argv) {
                                verbose = 1;
                                break;
 
+                       case 'V':
+                               printf("%s\n", network_version());
+                               exit(0);
+                               break;
+
                        case '?':
                                break;