- prefix = 1;
- printf("\n\t advertised networks\n\t ");
- while (msg_tlen >= sizeof(struct olsr_hna)) {
- if (!TTEST2(*msg_data, sizeof(struct olsr_hna)))
- goto trunc;
+ printf("\n\t Advertised networks (total %u)",
+ (unsigned int) (msg_tlen / sizeof(struct olsr_hna6)));
+#if INET6
+ if (is_ipv6)
+ {
+ int i = 0;
+ while (msg_tlen >= sizeof(struct olsr_hna6)) {
+ struct olsr_hna6 *hna6;
+
+ if (!TTEST2(*msg_data, sizeof(struct olsr_hna6)))
+ goto trunc;
+
+ hna6 = (struct olsr_hna6 *)msg_data;
+
+ printf("\n\t #%i: %s/%u",
+ i, ip6addr_string(hna6->network),
+ mask62plen (hna6->mask));
+
+ msg_data += sizeof(struct olsr_hna6);
+ msg_tlen -= sizeof(struct olsr_hna6);
+ }
+ }
+ else
+#endif
+ {
+ int col = 0;
+ while (msg_tlen >= sizeof(struct olsr_hna4)) {
+ if (!TTEST2(*msg_data, sizeof(struct olsr_hna4)))
+ goto trunc;