From d65e98fde6a6644530c16944f5a55042a0f3e6ed Mon Sep 17 00:00:00 2001 From: Fred Morcos Date: Wed, 13 Dec 2023 13:40:48 +0100 Subject: [PATCH] Fix warnings with GCC and older clang --- pdns/dnsbulktest.cc | 62 +++++++++++++++++++++++---------------------- pdns/dnstcpbench.cc | 30 ++++++++++++---------- pdns/histog.hh | 2 ++ 3 files changed, 50 insertions(+), 44 deletions(-) diff --git a/pdns/dnsbulktest.cc b/pdns/dnsbulktest.cc index 9ebf705ef633..2f6d264fa62e 100644 --- a/pdns/dnsbulktest.cc +++ b/pdns/dnsbulktest.cc @@ -24,7 +24,9 @@ #endif #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" +#if __clang_major__ >= 15 #pragma GCC diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy" +#endif #include #include #include @@ -77,7 +79,7 @@ struct SendReceive using Answer = DNSResult; // ip Socket d_socket; std::deque d_idqueue; - + using acc_t = accumulator_set< double , stats(acc_t(boost::accumulators::tag::extended_p_square::probabilities=s_probs))) @@ -108,49 +110,49 @@ struct SendReceive d_idqueue.push_back(id); } } - + Identifier send(TypedQuery& domain) { //cerr<<"Sending query for '"< packet; - + DNSPacketWriter pw(packet, domain.name, domain.type); if (d_idqueue.empty()) { cerr<<"Exhausted ids!"<id = d_idqueue.front(); d_idqueue.pop_front(); pw.getHeader()->rd = 1; pw.getHeader()->qr = 0; - + if (::send(d_socket.getHandle(), &*packet.begin(), packet.size(), 0) < 0) { d_senderrors++; } - + if (!g_quiet) { cout<<"Sent out query for '"<id<id; } - + bool receive(Identifier& id, DNSResult& dr) { if (waitForData(d_socket.getHandle(), 0, 500000) > 0) { // NOLINTNEXTLINE(cppcoreguidelines-pro-type-member-init): no need to initialize the buffer std::array buf; - + auto len = recv(d_socket.getHandle(), buf.data(), buf.size(), 0); if (len < 0) { d_receiveerrors++; return false; } d_received++; - // parse packet, set 'id', fill out 'ip' - + // parse packet, set 'id', fill out 'ip' + MOADNSParser mdp(false, string(buf.data(), static_cast(len))); if(!g_quiet) { cout<<"Reply to question for qname='"<first.d_place == 1 && i->first.d_type == mdp.d_qtype) dr.ips.push_back(ComboAddress(i->first.getContent()->getZoneRepresentation())); if(i->first.d_place == 2 && i->first.d_type == QType::SOA) { @@ -170,15 +172,15 @@ struct SendReceive cout<<"\t"<first.d_ttl<<"\t"<< i->first.getContent()->getZoneRepresentation()<<"\n"; } } - + id = mdp.d_header.id; d_idqueue.push_back(id); - + return true; } return false; } - + void deliverTimeout(const Identifier& id) { if(!g_quiet) { @@ -186,7 +188,7 @@ struct SendReceive } d_idqueue.push_back(id); } - + void deliverAnswer(TypedQuery& domain, const DNSResult& dr, unsigned int usec) { (*d_acc)(usec/1000.0); @@ -205,7 +207,7 @@ struct SendReceive else if(dr.rcode) { d_errors++; } - else if(dr.ips.empty() && dr.seenauthsoa) + else if(dr.ips.empty() && dr.seenauthsoa) d_nodatas++; else if(!dr.ips.empty()) d_oks++; @@ -284,15 +286,15 @@ try SendReceive sr(g_vm["ip-address"].as(), g_vm["portnumber"].as()); unsigned int limit = g_vm["limit"].as(); - + vector domains; - + Inflighter, SendReceive> inflighter(domains, sr); inflighter.d_maxInFlight = 1000; inflighter.d_timeoutSeconds = 3; inflighter.d_burst = 100; string line; - + pair split; string::size_type pos; while(stringfgets(stdin, line)) { @@ -337,25 +339,25 @@ try cerr<< datafmt % " Queued " % domains.size() % " Received" % sr.d_received; cerr<< datafmt % " Error -/-" % sr.d_senderrors % " Timeouts" % inflighter.getTimeouts(); cerr<< datafmt % " " % "" % " Unexpected" % inflighter.getUnexpecteds(); - + cerr<< datafmt % " Sent" % (domains.size() - sr.d_senderrors) % " Total" % (sr.d_received + inflighter.getTimeouts() + inflighter.getUnexpecteds()); - - cerr<= 15 #pragma GCC diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy" +#endif #include #include #include @@ -61,7 +63,7 @@ static unsigned int makeUsec(const struct timeval& tv) return 1000000*tv.tv_sec + tv.tv_usec; } -/* On Linux, run echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle +/* On Linux, run echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle to prevent running out of free TCP ports */ struct BenchQuery @@ -87,7 +89,7 @@ try if(!g_onlyTCP) { Socket udpsock(g_dest.sin4.sin_family, SOCK_DGRAM); - + udpsock.sendTo(string(packet.begin(), packet.end()), g_dest); ComboAddress origin; res = waitForData(udpsock.getHandle(), 0, 1000 * g_timeoutMsec); @@ -112,10 +114,10 @@ try Socket sock(g_dest.sin4.sin_family, SOCK_STREAM); int tmp=1; - if(setsockopt(sock.getHandle(),SOL_SOCKET,SO_REUSEADDR,(char*)&tmp,sizeof tmp)<0) + if(setsockopt(sock.getHandle(),SOL_SOCKET,SO_REUSEADDR,(char*)&tmp,sizeof tmp)<0) throw runtime_error("Unable to set socket reuse: "+stringerror()); - - if(g_tcpNoDelay && setsockopt(sock.getHandle(), IPPROTO_TCP, TCP_NODELAY,(char*)&tmp,sizeof tmp)<0) + + if(g_tcpNoDelay && setsockopt(sock.getHandle(), IPPROTO_TCP, TCP_NODELAY,(char*)&tmp,sizeof tmp)<0) throw runtime_error("Unable to set socket no delay: "+stringerror()); sock.connect(g_dest); @@ -132,10 +134,10 @@ try g_timeOuts++; return; } - + if(sock.read((char *) &len, 2) != 2) throw PDNSException("tcp read failed"); - + len=ntohs(len); auto creply = std::make_unique(len); int n=0; @@ -146,9 +148,9 @@ try throw PDNSException("tcp read failed"); n+=numread; } - + reply=string(creply.get(), len); - + gettimeofday(&now, 0); q->tcpUsec = makeUsec(now - tv); q->answerSecond = now.tv_sec; @@ -181,7 +183,7 @@ static void worker() { setThreadName("dnstcpb/worker"); for(;;) { - unsigned int pos = g_pos++; + unsigned int pos = g_pos++; if(pos >= g_queries.size()) break; @@ -212,7 +214,7 @@ try hidden.add_options() ("remote-host", po::value(), "remote-host") ("remote-port", po::value()->default_value(53), "remote-port"); - alloptions.add(desc).add(hidden); + alloptions.add(desc).add(hidden); po::positional_options_description p; p.add("remote-host", 1); @@ -246,7 +248,7 @@ try g_dest = ComboAddress(g_vm["remote-host"].as().c_str(), g_vm["remote-port"].as()); unsigned int numworkers=g_vm["workers"].as(); - + if(g_verbose) { cout<<"Sending queries to: "< acc_t; acc_t udpspeeds, tcpspeeds, qps; - + typedef map counts_t; counts_t counts; diff --git a/pdns/histog.hh b/pdns/histog.hh index 94cc7d9a2bcd..3eed4d7a8d44 100644 --- a/pdns/histog.hh +++ b/pdns/histog.hh @@ -1,7 +1,9 @@ #pragma once #pragma GCC diagnostic push #pragma GCC diagnostic ignored "-Wunused-parameter" +#if __clang_major__ >= 15 #pragma GCC diagnostic ignored "-Wdeprecated-copy-with-user-provided-copy" +#endif #include #include #pragma GCC diagnostic pop