mirror of
https://github.com/g4klx/MMDVMHost
synced 2025-12-22 08:05:49 +08:00
set INADDR_ANY/IN6ADDR_ANY_INIT address string to m_socket
when CUDPSocket::open() is called with m_address (in CUDPSocket) is nothing, IPv4 socket is created by "0.0.0.0" (INADDR_ANY) address. This causes a problem that DMRGateway cannot connect to reflector on IPv6. To choose default INADDR_ANY/IN6ADDR_ANY_INIT address, added open(address_family) in UDPSocket.cpp. Following code sets address string at construction, not modified. NXDNNetwork.cpp POCSAGNetwork.cpp YSFNetwork.cpp Other codes does not set, modified open() -> open(address_family) DMRNetwork.cpp DStarNetwork.cpp MMDVMHost.cpp MobileGPS.cpp P25Network.cpp RemoteCommand.cpp RemoteControl.cpp I think there is more clever method, but I have no other idea. Maybe IPv6 support for digital radio works, but RemoteControl can work IPv4 only.
This commit is contained in:
@@ -117,14 +117,37 @@ bool CUDPSocket::isnone(const sockaddr_storage &addr)
|
||||
(in->sin_addr.s_addr == htonl(INADDR_NONE)) );
|
||||
}
|
||||
|
||||
bool CUDPSocket::open(const unsigned int af)
|
||||
{
|
||||
switch (af) {
|
||||
case AF_INET6:
|
||||
m_address = "::";
|
||||
break;
|
||||
case AF_INET:
|
||||
m_address = "0.0.0.0";
|
||||
break;
|
||||
default:
|
||||
LogWarning("unknown address family - %d", af);
|
||||
break;
|
||||
}
|
||||
|
||||
return open();
|
||||
}
|
||||
|
||||
bool CUDPSocket::open()
|
||||
{
|
||||
int err;
|
||||
sockaddr_storage addr;
|
||||
unsigned int addrlen;
|
||||
|
||||
/* m_address should be defined */
|
||||
if (m_address.empty()) {
|
||||
LogError("The local address is undefined");
|
||||
return false;
|
||||
}
|
||||
|
||||
/* to determine protocol family, call lookup() first. */
|
||||
err = lookup(m_address.empty() ? "0.0.0.0" : m_address.c_str(), m_port, addr, addrlen);
|
||||
err = lookup(m_address.c_str(), m_port, addr, addrlen);
|
||||
if (err) {
|
||||
LogError("The local address is invalid - %s", m_address.c_str());
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user