X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/703ad5b9a14dc2a42849669d3618a8ba1136bb92..4afaecdd25eb53949f523e5d4891d5dbbfadb63d:/stglibs/pinger.lib/pinger.cpp diff --git a/stglibs/pinger.lib/pinger.cpp b/stglibs/pinger.lib/pinger.cpp index 664367e8..1689e294 100644 --- a/stglibs/pinger.lib/pinger.cpp +++ b/stglibs/pinger.lib/pinger.cpp @@ -123,19 +123,19 @@ return 0; //----------------------------------------------------------------------------- void STG_PINGER::AddIP(uint32_t ip) { -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); ipToAdd.push_back(ip); } //----------------------------------------------------------------------------- void STG_PINGER::DelIP(uint32_t ip) { -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); ipToDel.push_back(ip); } //----------------------------------------------------------------------------- void STG_PINGER::RealAddIP() { -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); std::list::iterator iter; iter = ipToAdd.begin(); @@ -149,7 +149,7 @@ ipToAdd.erase(ipToAdd.begin(), ipToAdd.end()); //----------------------------------------------------------------------------- void STG_PINGER::RealDelIP() { -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); std::list::iterator iter; std::multimap::iterator treeIter; @@ -165,14 +165,9 @@ while (iter != ipToDel.end()) ipToDel.erase(ipToDel.begin(), ipToDel.end()); } //----------------------------------------------------------------------------- -int STG_PINGER::GetPingIPNum() const -{ -return pingIP.size(); -} -//----------------------------------------------------------------------------- void STG_PINGER::PrintAllIP() { -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); std::multimap::iterator iter; iter = pingIP.begin(); while (iter != pingIP.end()) @@ -189,7 +184,7 @@ while (iter != pingIP.end()) //----------------------------------------------------------------------------- int STG_PINGER::GetIPTime(uint32_t ip, time_t * t) const { -STG_LOCKER lock(&mutex, __FILE__, __LINE__); +STG_LOCKER lock(&mutex); std::multimap::const_iterator treeIter; treeIter = pingIP.find(ip); @@ -202,20 +197,20 @@ return 0; //----------------------------------------------------------------------------- uint16_t STG_PINGER::PingCheckSum(void * data, int len) { -unsigned short * buf = (unsigned short *)data; -unsigned int sum = 0; -unsigned short result; +uint16_t * buf = static_cast(data); +uint32_t sum = 0; +uint32_t result; for ( sum = 0; len > 1; len -= 2 ) sum += *buf++; if ( len == 1 ) - sum += *(unsigned char*)buf; + sum += *reinterpret_cast(buf); sum = (sum >> 16) + (sum & 0xFFFF); sum += (sum >> 16); result = ~sum; -return result; +return static_cast(result); } //----------------------------------------------------------------------------- int STG_PINGER::SendPing(uint32_t ip) @@ -228,7 +223,7 @@ addr.sin_addr.s_addr = ip; memset(&pmSend, 0, sizeof(pmSend)); pmSend.hdr.type = ICMP_ECHO; -pmSend.hdr.un.echo.id = pid; +pmSend.hdr.un.echo.id = static_cast(pid); memcpy(pmSend.msg, &ip, sizeof(ip)); pmSend.hdr.checksum = PingCheckSum(&pmSend, sizeof(pmSend)); @@ -250,19 +245,17 @@ uint32_t ipAddr = 0; char buf[128]; memset(buf, 0, sizeof(buf)); -int bytes; socklen_t len = sizeof(addr); -bytes = recvfrom(recvSocket, &buf, sizeof(buf), 0, (struct sockaddr*)&addr, &len); -if (bytes > 0) +if (recvfrom(recvSocket, &buf, sizeof(buf), 0, reinterpret_cast(&addr), &len)) { - struct IP_HDR * ip = (struct IP_HDR *)buf; - struct ICMP_HDR *icmp = (struct ICMP_HDR *)(buf + ip->ihl * 4); + struct IP_HDR * ip = static_cast(static_cast(buf)); + struct ICMP_HDR *icmp = static_cast(static_cast(buf + ip->ihl * 4)); if (icmp->un.echo.id != pid) return 0; - ipAddr = *(uint32_t*)(buf + sizeof(ICMP_HDR) + ip->ihl * 4); + ipAddr = *static_cast(static_cast(buf + sizeof(ICMP_HDR) + ip->ihl * 4)); } return ipAddr;