]> The Tcpdump Group git mirrors - tcpdump/commitdiff
Babel: improve printing of time intervals
authorDenis Ovsienko <[email protected]>
Wed, 16 Oct 2013 13:02:35 +0000 (17:02 +0400)
committerDenis Ovsienko <[email protected]>
Fri, 18 Oct 2013 05:24:37 +0000 (09:24 +0400)
All Babel intervals are encoded in centiseconds and must not be 0. In an
Update TLV the interval value 0xFFFF means infinity (RFC6126 Section
4.4.9). Update the test cases.

print-babel.c
tests/babel1v.out
tests/babel_auth.out

index 0b1fd57ee879e228ebde8e107612d2b3e0d8dc80..4c77a0cb8ab7e25d779e434650562b782b551e79 100644 (file)
@@ -139,6 +139,23 @@ format_address(const u_char *prefix)
 #endif
 }
 
+static const char *
+format_interval(const u_int16_t i)
+{
+    static char buf[sizeof("0000.0s")];
+
+    if (i == 0)
+        return "0.0s (bogus)";
+    snprintf(buf, sizeof(buf), "%u.%us", i / 10, i % 10);
+    return buf;
+}
+
+static const char *
+format_interval_update(const u_int16_t i)
+{
+    return i == 0xFFFF ? "infinity" : format_interval(i);
+}
+
 /* Return number of octets consumed from the input buffer (not the prefix length
  * in bytes), or -1 for encoding error. */
 static int
@@ -335,7 +352,7 @@ babel_print_v2(const u_char *cp, u_int length) {
                 if(len < 6) goto corrupt;
                 nonce = EXTRACT_16BITS(message + 4);
                 interval = EXTRACT_16BITS(message + 6);
-                printf("%04x %d", nonce, interval);
+                printf("%04x %s", nonce, format_interval(interval));
             }
         }
             break;
@@ -362,7 +379,7 @@ babel_print_v2(const u_char *cp, u_int length) {
                 if(len < 6) goto corrupt;
                 seqno = EXTRACT_16BITS(message + 4);
                 interval = EXTRACT_16BITS(message + 6);
-                printf("seqno %u interval %u", seqno, interval);
+                printf("seqno %u interval %s", seqno, format_interval(interval));
             }
         }
             break;
@@ -380,8 +397,8 @@ babel_print_v2(const u_char *cp, u_int length) {
                 interval = EXTRACT_16BITS(message + 6);
                 rc = network_address(message[2], message + 8, len - 6, address);
                 if(rc < 0) { printf("[|babel]"); break; }
-                printf("%s txcost %u interval %d",
-                       format_address(address), txcost, interval);
+                printf("%s txcost %u interval %s",
+                       format_address(address), txcost, format_interval(interval));
             }
         }
             break;
@@ -438,12 +455,12 @@ babel_print_v2(const u_char *cp, u_int length) {
                 interval = EXTRACT_16BITS(message + 6);
                 seqno = EXTRACT_16BITS(message + 8);
                 metric = EXTRACT_16BITS(message + 10);
-                printf("%s%s%s %s metric %u seqno %u interval %u",
+                printf("%s%s%s %s metric %u seqno %u interval %s",
                        (message[3] & 0x80) ? "/prefix": "",
                        (message[3] & 0x40) ? "/id" : "",
                        (message[3] & 0x3f) ? "/unknown" : "",
                        format_prefix(prefix, plen),
-                       metric, seqno, interval);
+                       metric, seqno, format_interval_update(interval));
                 if(message[3] & 0x80) {
                     if(message[2] == 1)
                         memcpy(v4_prefix, prefix, 16);
index 80877ba58600821f7a0f1bfa15c3f639f18d4e95..c8d85ee328f1fc5b1148fe331accdaf6efa510b6 100644 (file)
@@ -1,32 +1,32 @@
 IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
-       Hello seqno 8042 interval 2000
+       Hello seqno 8042 interval 200.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
-       Hello seqno 40102 interval 2000
+       Hello seqno 40102 interval 200.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 122) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (110)
-       Update/prefix/id 2001:660:3301:8063:218:84ff:fe1a:615d/128 metric 1 seqno 32272 interval 8000 sub-diversity 6
+       Update/prefix/id 2001:660:3301:8063:218:84ff:fe1a:615d/128 metric 1 seqno 32272 interval 800.0s sub-diversity 6
        Next Hop 192.168.4.25
-       Update 192.168.4.195/32 metric 1 seqno 32272 interval 8000 sub-diversity 6
-       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 0 seqno 40149 interval 8000 sub-diversity empty
-       Update ::/0 metric 196 seqno 40149 interval 8000 sub-diversity empty
-       Update 192.168.4.25/32 metric 0 seqno 40149 interval 8000 sub-diversity empty
+       Update 192.168.4.195/32 metric 1 seqno 32272 interval 800.0s sub-diversity 6
+       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 0 seqno 40149 interval 800.0s sub-diversity empty
+       Update ::/0 metric 196 seqno 40149 interval 800.0s sub-diversity empty
+       Update 192.168.4.25/32 metric 0 seqno 40149 interval 800.0s sub-diversity empty
 IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
-       Hello seqno 8043 interval 2000
-       IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+       Hello seqno 8043 interval 200.0s
+       IHU fe80::3428:af91:251:d626 txcost 96 interval 600.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
-       Hello seqno 40103 interval 2000
+       Hello seqno 40103 interval 200.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
-       Hello seqno 8044 interval 2000
+       Hello seqno 8044 interval 200.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
-       Hello seqno 40104 interval 2000
-       IHU fe80::68d3:1235:d068:1f9e txcost 96 interval 6000
+       Hello seqno 40104 interval 200.0s
+       IHU fe80::68d3:1235:d068:1f9e txcost 96 interval 600.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
-       Hello seqno 8045 interval 2000
+       Hello seqno 8045 interval 200.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 20) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (8)
-       Hello seqno 40105 interval 2000
+       Hello seqno 40105 interval 200.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 64) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (52)
-       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
-       Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
-       Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 800.0s
+       Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 800.0s
+       Update/prefix 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 800.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
        MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
 IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
@@ -35,16 +35,16 @@ IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626
 IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
 IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::3428:af91:251:d626.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
 IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
-       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 800.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
        MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
 IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
 IP6 (hlim 1, next-header UDP (17) payload length: 50) fe80::68d3:1235:d068:1f9e.5359 > ff02::cca6:c0f9:e182:5359.5359: [udp sum ok] UDP, length 42
 IP6 (hlim 1, next-header UDP (17) payload length: 36) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (24)
-       Hello seqno 8046 interval 2000
-       IHU fe80::3428:af91:251:d626 txcost 96 interval 6000
+       Hello seqno 8046 interval 200.0s
+       IHU fe80::3428:af91:251:d626 txcost 96 interval 600.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 40) fe80::68d3:1235:d068:1f9e.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (28)
-       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 8000
+       Update/prefix/id 2001:660:3301:8063:218:f3ff:fea9:914e/128 metric 65535 seqno 40149 interval 800.0s
 IP6 (hlim 1, next-header UDP (17) payload length: 44) fe80::3428:af91:251:d626.6697 > ff02::1:6.6697: [udp sum ok] babel 2 (32)
        MH-Request (127 hops) for 2001:660:3301:8063:218:f3ff:fea9:914e/128 seqno 40150 id 02:18:f3:ff:fe:a9:91:4e
 IP6 (hlim 64, next-header UDP (17) payload length: 188) fe80::3428:af91:251:d626.5359 > fe80::68d3:1235:d068:1f9e.5359: [udp sum ok] UDP, length 180
index dcaafe14ded9928272bfd30ff5af7d47a21ceb99..56ca7fd017669f260e24c710d41010261015c683 100644 (file)
@@ -1,6 +1,6 @@
 IP6 (class 0xc0, hlim 1, next-header UDP (17) payload length: 436) fe80::b299:28ff:fec8:d646.6696 > ff02::1:6.6696: [udp sum ok] babel 2 (424)
-       Hello seqno 58134 interval 400
-       Update/id ::/0 metric 65535 seqno 41391 interval 65535
+       Hello seqno 58134 interval 40.0s
+       Update/id ::/0 metric 65535 seqno 41391 interval infinity
        Request for any
        TS/PC timestamp 1339081200 packetcounter 2
        HMAC key-id 30 digest-20 AD0FA7CD8D5A1898EC5409C8EDDA68B3ACA21B80