add macos icmp ping

This commit is contained in:
DuckVador 2020-07-15 21:41:58 +08:00
parent f42ef88cf6
commit 5a35943499
No known key found for this signature in database
GPG Key ID: 9B0DED785B37110E
3 changed files with 13 additions and 11 deletions

View File

@ -1 +1 @@
5780
5781

View File

@ -184,18 +184,27 @@ namespace Qv2ray::components::latency::icmping
sockaddr_in addr;
socklen_t slen = sizeof(sockaddr_in);
int rlen = 0;
icmp resp;
char buf[1024];
do
{
do
{
rlen = recvfrom(socketId, &resp, sizeof(icmp), 0, (struct sockaddr *) &addr, &slen);
rlen = recvfrom(socketId,buf , 1024, 0, (struct sockaddr *) &addr, &slen);
} while (rlen == -1 && errno == EINTR);
// skip malformed
if (rlen != sizeof(icmp))
#ifdef Q_OS_MAC
if(rlen<sizeof(icmp)+20)
#else
if (rlen < sizeof(icmp))
#endif
continue;
#ifdef Q_OS_MAC
auto& resp=*reinterpret_cast<icmp*>(buf+20);
#else
auto& resp=*reinterpret_cast<icmp*>(buf);
#endif
// skip the ones we didn't send
auto cur_seq = resp.icmp_hun.ih_idseq.icd_seq;
if (cur_seq >= seq)

View File

@ -1183,16 +1183,9 @@ void PreferencesWindow::on_latencyTCPingRB_clicked()
void PreferencesWindow::on_latencyICMPingRB_clicked()
{
LOADINGCHECK
#ifdef Q_OS_MAC
#warning No ICMPing support on macOS
CurrentConfig.networkConfig.latencyTestingMethod = TCPING;
latencyICMPingRB->setChecked(false);
latencyTCPingRB->setChecked(true);
#else
CurrentConfig.networkConfig.latencyTestingMethod = ICMPING;
latencyICMPingRB->setChecked(true);
latencyTCPingRB->setChecked(false);
#endif
}
void PreferencesWindow::on_qvNetworkUATxt_editTextChanged(const QString &arg1)