Nmap Development mailing list archives

nmap 7.92 build fails on Fedora 34


From: "ndof () gmx li" <ndof () gmx li>
Date: Fri, 5 Nov 2021 12:04:58 +0100

Hi developers,
building nmap on Fedora 33 works, but fails on Fedora 34 with:

make[1]: Leaving directory '/builddir/build/BUILD/nmap-7.92/libnetutil'
netutil.cc: In function 'const void* icmpv6_get_data(const icmpv6_hdr*,
unsigned int*)':
netutil.cc:756:13: error: invalid use of incomplete type 'const struct
icmpv6_hdr'
  756 |   if (icmpv6->icmpv6_type == ICMPV6_TIMEXCEED ||
icmpv6->icmpv6_type == ICMPV6_UNREACH)
      |             ^~
In file included from netutil.cc:124:
netutil.h:195:42: note: forward declaration of 'struct icmpv6_hdr'
  195 | const void *icmpv6_get_data(const struct icmpv6_hdr *icmpv6,
unsigned int *len);
      |                                          ^~~~~~~~~~
netutil.cc:756:30: error: 'ICMPV6_TIMEXCEED' was not declared in this
scope; did you mean 'ICMP_TIMEXCEED'?
  756 |   if (icmpv6->icmpv6_type == ICMPV6_TIMEXCEED ||
icmpv6->icmpv6_type == ICMPV6_UNREACH)
      |                              ^~~~~~~~~~~~~~~~
      |                              ICMP_TIMEXCEED
netutil.cc:756:56: error: invalid use of incomplete type 'const struct
icmpv6_hdr'
  756 |   if (icmpv6->icmpv6_type == ICMPV6_TIMEXCEED ||
icmpv6->icmpv6_type == ICMPV6_UNREACH)
      |                                                        ^~
In file included from netutil.cc:124:
netutil.h:195:42: note: forward declaration of 'struct icmpv6_hdr'
  195 | const void *icmpv6_get_data(const struct icmpv6_hdr *icmpv6,
unsigned int *len);
      |                                          ^~~~~~~~~~
netutil.cc:756:73: error: 'ICMPV6_UNREACH' was not declared in this
scope; did you mean 'ICMP_UNREACH'?
  756 |   if (icmpv6->icmpv6_type == ICMPV6_TIMEXCEED ||
icmpv6->icmpv6_type == ICMPV6_UNREACH)
      |
         ^~~~~~~~~~~~~~
      |
         ICMP_UNREACH
netutil.cc:759:85: error: invalid use of incomplete type 'const struct
icmpv6_hdr'
  759 |     netutil_fatal("%s passed ICMPv6 packet with unhandled type
%d", __func__, icmpv6->icmpv6_type);
      |
                     ^~
In file included from netutil.cc:124:
netutil.h:195:42: note: forward declaration of 'struct icmpv6_hdr'
  195 | const void *icmpv6_get_data(const struct icmpv6_hdr *icmpv6,
unsigned int *len);
      |                                          ^~~~~~~~~~
netutil.cc: In function 'int collect_dnet_interfaces(const intf_entry*,
void*)':
netutil.cc:1348:52: error: 'const struct intf_entry' has no member named
'intf_index'; did you mean 'intf_len'?
 1348 |     dcrn->ifaces[dcrn->numifaces].ifindex = entry->intf_index;
      |                                                    ^~~~~~~~~~
      |                                                    intf_len
netutil.cc: In function 'int collect_dnet_routes(const route_entry*,
void*)':
netutil.cc:1649:49: error: 'const struct route_entry' has no member
named 'metric'
 1649 |   dcrn->routes[dcrn->numroutes].metric = entry->metric;
      |                                                 ^~~~~~
netutil.cc:1650:68: error: 'const struct route_entry' has no member
named 'intf_name'
 1650 |   dcrn->routes[dcrn->numroutes].device =
getInterfaceByName(entry->intf_name,
dcrn->routes[dcrn->numroutes].dest.ss_family);
      |
    ^~~~~~~~~
netutil.cc: In function 'const char* ippackethdrinfo(const u8*, u32, int)':
netutil.cc:2968:19: error: invalid application of 'sizeof' to incomplete
type 'icmpv6_hdr'
 2968 |     if (datalen > sizeof(struct icmpv6_hdr)) {
      |                   ^~~~~~~~~~~~~~~~~~~~~~~~~
netutil.cc:2974:17: error: invalid use of incomplete type 'const struct
icmpv6_hdr'
 2974 |           icmpv6->icmpv6_type, icmpv6->icmpv6_code, ipinfo);
      |                 ^~
In file included from netutil.cc:124:
netutil.h:195:42: note: forward declaration of 'struct icmpv6_hdr'
  195 | const void *icmpv6_get_data(const struct icmpv6_hdr *icmpv6,
unsigned int *len);
      |                                          ^~~~~~~~~~
netutil.cc:2974:38: error: invalid use of incomplete type 'const struct
icmpv6_hdr'
 2974 |           icmpv6->icmpv6_type, icmpv6->icmpv6_code, ipinfo);
      |                                      ^~
In file included from netutil.cc:124:
netutil.h:195:42: note: forward declaration of 'struct icmpv6_hdr'
  195 | const void *icmpv6_get_data(const struct icmpv6_hdr *icmpv6,
unsigned int *len);
      |                                          ^~~~~~~~~~
netutil.cc: In function 'bool accept_ns(const unsigned char*, const
pcap_pkthdr*, int, size_t)':
netutil.cc:4357:45: error: 'ICMPV6_HDR_LEN' was not declared in this
scope; did you mean 'ICMP_HDR_LEN'?
 4357 |   if (head->caplen < offset + IP6_HDR_LEN + ICMPV6_HDR_LEN)
      |                                             ^~~~~~~~~~~~~~
      |                                             ICMP_HDR_LEN
netutil.cc:4361:22: error: invalid use of incomplete type 'struct
icmpv6_hdr'
 4361 |   return icmp6_header->icmpv6_type ==
ICMPV6_NEIGHBOR_ADVERTISEMENT &&
      |                      ^~
In file included from netutil.cc:124:
netutil.h:195:42: note: forward declaration of 'struct icmpv6_hdr'
  195 | const void *icmpv6_get_data(const struct icmpv6_hdr *icmpv6,
unsigned int *len);
      |                                          ^~~~~~~~~~
netutil.cc:4361:39: error: 'ICMPV6_NEIGHBOR_ADVERTISEMENT' was not
declared in this scope
 4361 |   return icmp6_header->icmpv6_type ==
ICMPV6_NEIGHBOR_ADVERTISEMENT &&
      |                                       ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
netutil.cc:4362:17: error: invalid use of incomplete type 'struct
icmpv6_hdr'
 4362 |     icmp6_header->icmpv6_code == 0;
      |                 ^~
In file included from netutil.cc:124:
netutil.h:195:42: note: forward declaration of 'struct icmpv6_hdr'
  195 | const void *icmpv6_get_data(const struct icmpv6_hdr *icmpv6,
unsigned int *len);
      |                                          ^~~~~~~~~~
netutil.cc: In function 'int read_ns_reply_pcap(pcap_t*, u8*,
sockaddr_in6*, long int, timeval*, bool*, void (*)(int, const u8*, u32,
timeval*))':
netutil.cc:4389:60: error: 'ICMPV6_HDR_LEN' was not declared in this
scope; did you mean 'ICMP_HDR_LEN'?
 4389 |   na = (struct icmpv6_msg_nd *)(p + offset + IP6_HDR_LEN +
ICMPV6_HDR_LEN);
      |
^~~~~~~~~~~~~~
      |
ICMP_HDR_LEN
netutil.cc:4390:51: error: invalid application of 'sizeof' to incomplete
type 'read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int,
timeval*, bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4390 |   if (head->caplen >= ((unsigned char *)na - p) + sizeof(struct
icmpv6_msg_nd) &&
      |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
netutil.cc:4391:7: error: invalid use of incomplete type 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4391 |     na->icmpv6_option_type == 2 &&
      |       ^~
netutil.cc:4383:10: note: forward declaration of 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4383 |   struct icmpv6_msg_nd *na;
      |          ^~~~~~~~~~~~~
netutil.cc:4392:7: error: invalid use of incomplete type 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4392 |     na->icmpv6_option_length == 1) {
      |       ^~
netutil.cc:4383:10: note: forward declaration of 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4383 |   struct icmpv6_msg_nd *na;
      |          ^~~~~~~~~~~~~
netutil.cc:4394:26: error: invalid use of incomplete type 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4394 |     memcpy(sendermac, &na->icmpv6_mac, 6);
      |                          ^~
netutil.cc:4383:10: note: forward declaration of 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4383 |   struct icmpv6_msg_nd *na;
      |          ^~~~~~~~~~~~~
netutil.cc:4400:43: error: invalid use of incomplete type 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4400 |   memcpy(&senderIP->sin6_addr.s6_addr, &na->icmpv6_target, 16);
      |                                           ^~
netutil.cc:4383:10: note: forward declaration of 'struct
read_ns_reply_pcap(pcap_t*, u8*, sockaddr_in6*, long int, timeval*,
bool*, void (*)(int, const u8*, u32, timeval*))::icmpv6_msg_nd'
 4383 |   struct icmpv6_msg_nd *na;
      |          ^~~~~~~~~~~~~
netutil.cc: In function 'bool doND(const char*, const u8*, const
sockaddr_storage*, const sockaddr_storage*, u8*, void (*)(int, const
u8*, u32, timeval*))':
netutil.cc:4432:40: error: 'ICMPV6_HDR_LEN' was not declared in this
scope; did you mean 'ICMP_HDR_LEN'?
 4432 |   u8 frame[ETH_HDR_LEN + IP6_HDR_LEN + ICMPV6_HDR_LEN + 4 + 16
+ 8];
      |                                        ^~~~~~~~~~~~~~
      |                                        ICMP_HDR_LEN
netutil.cc:4473:28: error: 'ICMPV6_NEIGHBOR_ADVERTISEMENT' was not
declared in this scope
 4473 |            IPPROTO_ICMPV6, ICMPV6_NEIGHBOR_ADVERTISEMENT);
      |                            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /usr/include/dnet.h:14,
                 from netutil.h:79,
                 from netutil.cc:124:
netutil.cc:4480:16: error: 'frame' was not declared in this scope
 4480 |   eth_pack_hdr(frame, *ns_dst_mac, *srcmac, ETH_TYPE_IPV6);
      |                ^~~~~
In file included from /usr/include/dnet.h:16,
                 from netutil.h:79,
                 from netutil.cc:124:
netutil.cc:4481:16: error: 'frame' was not declared in this scope
 4481 |   ip6_pack_hdr(frame + ETH_HDR_LEN, 0, 0, 32, 0x3a, 255,
*src_sin6->sin6_addr.s6_addr, *ns_dst_ip6.sin6_addr.s6_addr);
      |                ^~~~~
netutil.cc:4482:26: error: 'frame' was not declared in this scope
 4482 |   icmpv6_pack_hdr_ns_mac(frame + ETH_HDR_LEN + IP6_HDR_LEN,
target_sin6->sin6_addr.s6_addr, *srcmac);
      |                          ^~~~~
netutil.cc:4482:3: error: 'icmpv6_pack_hdr_ns_mac' was not declared in
this scope; did you mean 'icmp_pack_hdr_mask'?
 4482 |   icmpv6_pack_hdr_ns_mac(frame + ETH_HDR_LEN + IP6_HDR_LEN,
target_sin6->sin6_addr.s6_addr, *srcmac);
      |   ^~~~~~~~~~~~~~~~~~~~~~
      |   icmp_pack_hdr_mask
make[1]: *** [Makefile:37: netutil.o] Error 1
make: *** [Makefile:160: build-netutil] Error 2
make: *** Waiting for unfinished jobs....


I think, Fedora 34 comes with an newer libdnet then Fedora 33.
Fedora 33 use version 1.12 and Fedora 34 version 1.14

_______________________________________________
Sent through the dev mailing list
https://nmap.org/mailman/listinfo/dev
Archived at http://seclists.org/nmap-dev/


Current thread: