Re-add IPv4 and IPv6 capabilities to the P25 network.

This commit is contained in:
Jonathan Naylor 2024-01-29 19:46:47 +00:00
parent 7c38895c01
commit 30879a0f04
3 changed files with 78 additions and 41 deletions

View File

@ -37,10 +37,10 @@
226 p25.dstar-yo.ro 41000 226 p25.dstar-yo.ro 41000
# 228 Switzerland - https://project25.ch # 228 Switzerland - https://project25.ch
228 project25.ch 41000 228 project25.ch 41000
# 235 DVSPH UK Wide # 235 DVSPH UK Wide
235 p25.dvsph.net 41000 235 p25.dvsph.net 41000
# 260 HBLink Poland P25 # 260 HBLink Poland P25
260 p25.hblink.pl 41000 260 p25.hblink.pl 41000
@ -52,7 +52,7 @@
357 3.215.215.169 41010 357 3.215.215.169 41010
# 419 Toledo Amateur Digital Association # 419 Toledo Amateur Digital Association
419 tada-p25.ddns.net 41000 419 tada-p25.ddns.net 41000
# 420 Super Freq # 420 Super Freq
420 p25.superfreqdigital.com 41000 420 p25.superfreqdigital.com 41000
@ -67,7 +67,7 @@
530 zldigitalreflectors.hopto.org 41000 530 zldigitalreflectors.hopto.org 41000
# 555 Georgia 900 P25-ASL Xlink # 555 Georgia 900 P25-ASL Xlink
555 georgia900p25.hopto.org 41000 555 georgia900p25.hopto.org 41000
# 556 ARFCOM AR15.com # 556 ARFCOM AR15.com
556 reflector.site 41000 556 reflector.site 41000
@ -88,25 +88,25 @@
730 sdradio.cl 41000 730 sdradio.cl 41000
# 762 W4PFT Multimode Linked to BM TG 312486-Franklin County, GA # 762 W4PFT Multimode Linked to BM TG 312486-Franklin County, GA
762 p25.w4pft.com 41000 762 p25.w4pft.com 41000
# 822 TH-ASL-5508 # 822 TH-ASL-5508
822 p25.xlx822.com 41000 822 p25.xlx822.com 41000
# 841 Team Wave # 841 Team Wave
841 mx0wvv.ddns.net 41000 841 mx0wvv.ddns.net 41000
# 847 Chandler Hams # 847 Chandler Hams
847 xlx847.kk7mnz.com 41000 847 xlx847.kk7mnz.com 41000
# 848 Chandler Hams # 848 Chandler Hams
848 xlx848.kk7mnz.com 41000 848 xlx848.kk7mnz.com 41000
# 858 San Diego, CA # 858 San Diego, CA
858 nz6d.dx40.com 41000 858 nz6d.dx40.com 41000
# 865 K1LNX Multimode Server - Knoxville, TN # 865 K1LNX Multimode Server - Knoxville, TN
865 knoxp25.k1lnx.net 41000 865 knoxp25.k1lnx.net 41000
# 891 Western New York Digital Multimode Network - http://wny-digital.network - Buffalo, NY # 891 Western New York Digital Multimode Network - http://wny-digital.network - Buffalo, NY
891 p25.wny-digital.network 41000 891 p25.wny-digital.network 41000
@ -115,16 +115,16 @@
910 p25.freeddns.org 41000 910 p25.freeddns.org 41000
# 925 MotoChat # 925 MotoChat
925 p25.motochat.eu 41009 925 p25.motochat.eu 41009
# 926 HamFurs/LoFAR MultiMode Bridge # 926 HamFurs/LoFAR MultiMode Bridge
926 urf.kf3rry.org 41000 926 urf.kf3rry.org 41000
# 927 Southern California # 927 Southern California
927 927.org 41000 927 927.org 41000
# 946 FlagTorchSociety # 946 FlagTorchSociety
946 xlx.flagandtorchsociety.com 41000 946 xlx.flagandtorchsociety.com 41000
# 994 The Online Radio Club (Bridged to XLX994) # 994 The Online Radio Club (Bridged to XLX994)
994 misc.openreflector.com 41000 994 misc.openreflector.com 41000
@ -133,7 +133,7 @@
1007 43773.kb5rir.com 41003 1007 43773.kb5rir.com 41003
# 1402 DuckFar Repeater Group, Chicago # 1402 DuckFar Repeater Group, Chicago
1402 duckfarw9bmk.gotdns.com 43000 1402 duckfarw9bmk.gotdns.com 43000
# 1701 Sector 001 # 1701 Sector 001
1701 hamsomniac.mooo.com 41001 1701 hamsomniac.mooo.com 41001
@ -256,19 +256,19 @@
7487 23.234.230.152 41000 7487 23.234.230.152 41000
# 7941 WHITE MOUNTAIN REPEATER ASSOCIATION # 7941 WHITE MOUNTAIN REPEATER ASSOCIATION
7941 wmra.mooo.com 41000 7941 wmra.mooo.com 41000
# 8200 Mountain Lakes Regional Amateur Radio Society # 8200 Mountain Lakes Regional Amateur Radio Society
8200 n2yqt.tourge.net 41000 8200 n2yqt.tourge.net 41000
# 8207 Houston Area XLX Reflector # 8207 Houston Area XLX Reflector
8207 p25.kd5dfb.net 41000 8207 p25.kd5dfb.net 41000
# 8208 China P25 Network bridge to P25NX # 8208 China P25 Network bridge to P25NX
8208 47.105.33.47 41000 8208 47.105.33.47 41000
# 8210 Ohio Valley # 8210 Ohio Valley
8210 reflector.p25.in 41000 8210 reflector.p25.in 41000
# 9050 East Coast Reflector # 9050 East Coast Reflector
9050 45.77.198.235 41000 9050 45.77.198.235 41000
@ -313,7 +313,7 @@
10203 reflector.p25.link 41004 10203 reflector.p25.link 41004
# 10207 Arizona 900 P25 # 10207 Arizona 900 P25
10207 n6ex.ddns.net 41001 10207 n6ex.ddns.net 41001
# 10208 P25 France # 10208 P25 France
10208 p25.f5dan.fr 41000 10208 p25.f5dan.fr 41000
@ -412,7 +412,7 @@
10700 p25nsw.gustotech.net 41000 10700 p25nsw.gustotech.net 41000
# 10750 Australian Secondary P25 Reflector # 10750 Australian Secondary P25 Reflector
10750 clasn-p25.cloudasn.com 41000 10750 clasn-p25.cloudasn.com 41000
# 10888 Texas # 10888 Texas
10888 29520.asnode.org 41000 10888 29520.asnode.org 41000
@ -426,15 +426,14 @@
# 11069 KK6RQ DMR-310551 # 11069 KK6RQ DMR-310551
11069 area52.zapto.org 41000 11069 area52.zapto.org 41000
# 17603 URFM17 Universal Reflector # 17603 URFM17 Universal Reflector
17603 urf.m17.link 41000 17603 urf.m17.link 41000
# 20281 GR-KERKYRA-DV # 20281 GR-KERKYRA-DV
20281 greece.freedmr.online 41000 20281 greece.freedmr.online 41000
# 20222 HELLAS-FRN # 20222 HELLAS-FRN
20222 greece-frn.ddns.net 41000 20222 greece-frn.ddns.net 41000
# 21909 PRIDE - LGBTQIA+ Hams # 21909 PRIDE - LGBTQIA+ Hams
21909 ham.kimberlychase.com 41000 21909 ham.kimberlychase.com 41000
@ -488,7 +487,7 @@
23595 p25.oz-dmr.network 41000 23595 p25.oz-dmr.network 41000
# 24033 2 Meter Crew Anti-Net # 24033 2 Meter Crew Anti-Net
24033 wg5eek.com 41000 24033 wg5eek.com 41000
# 25605 Russia Ekaterinburg # 25605 Russia Ekaterinburg
25605 ysf.386i.ru 41000 25605 ysf.386i.ru 41000
@ -563,7 +562,7 @@
31079 927.org 41001 31079 927.org 41001
# 31138 kingsland Ga # 31138 kingsland Ga
31138 kingsland.cbridge.net 41000 31138 kingsland.cbridge.net 41000
# 31177 WESDIG P25 Reflector # 31177 WESDIG P25 Reflector
31177 p25.wesdig.com 41000 31177 p25.wesdig.com 41000
@ -587,7 +586,7 @@
31207 155.138.244.192 41000 31207 155.138.244.192 41000
# 31217 Central Illinois Skywarn - Linked to Brandmeister TG 311899 # 31217 Central Illinois Skywarn - Linked to Brandmeister TG 311899
31217 tg31217.kd9koo.com 41000 31217 tg31217.kd9koo.com 41000
# 31220 Lucas County Ohio ARES # 31220 Lucas County Ohio ARES
31220 w8mal-dvbridge.hopto.org 41000 31220 w8mal-dvbridge.hopto.org 41000
@ -608,13 +607,13 @@
31267 w8lrkp25.dyndns.org 41001 31267 w8lrkp25.dyndns.org 41001
# 31291 Southwest Missouri (P25/DMR) # 31291 Southwest Missouri (P25/DMR)
31291 p25.ddns.me 41001 31291 p25.ddns.me 41001
# 31297 Southwest Missouri Skywarn (P25/DMR) # 31297 Southwest Missouri Skywarn (P25/DMR)
31297 p25.ddns.me 41003 31297 p25.ddns.me 41003
# 31313 America's Kansas City Wide (P25/DMR/YSF) # 31313 America's Kansas City Wide (P25/DMR/YSF)
31313 p25.ddns.me 41002 31313 p25.ddns.me 41002
# 31337 SWLA <-> DMR TG 311995 <-> XLX337 # 31337 SWLA <-> DMR TG 311995 <-> XLX337
31337 bridge.kc5jmj.com 41000 31337 bridge.kc5jmj.com 41000
@ -623,7 +622,7 @@
31395 backbone.ad8g.net 41000 31395 backbone.ad8g.net 41000
# 31399 OhioLink Network Crossmode. http://olnradio.digital # 31399 OhioLink Network Crossmode. http://olnradio.digital
31399 xlx.kd8grn.net 41000 31399 xlx.kd8grn.net 41000
# 31340 Central New Jersey # 31340 Central New Jersey
31340 cnjham.msmts.com 41000 31340 cnjham.msmts.com 41000
@ -638,7 +637,7 @@
31425 70.44.20.24 41001 31425 70.44.20.24 41001
# 31424 SVARC-Shenango Valley Amateur Radio Club- K3WRB # 31424 SVARC-Shenango Valley Amateur Radio Club- K3WRB
31424 p25.n1tvi.net 41000 31424 p25.n1tvi.net 41000
# PA Cross Mode (alt), 31426 # PA Cross Mode (alt), 31426
31426 3.215.215.169 41001 31426 3.215.215.169 41001
@ -650,7 +649,7 @@
31490 ammermon.lorexddns.net 41001 31490 ammermon.lorexddns.net 41001
# 31497 LifeFlight, UT Statewide - Link to DMR TG 31497 # 31497 LifeFlight, UT Statewide - Link to DMR TG 31497
31497 45.79.110.170 41000 31497 45.79.110.170 41000
# 31555 SE Wisconsin Regional Linked to WiDMR 31555 # 31555 SE Wisconsin Regional Linked to WiDMR 31555
31555 mmdvm-p25.v24bridge.net 41000 31555 mmdvm-p25.v24bridge.net 41000
@ -686,7 +685,7 @@
31888 p25.kg4jpl.com 41000 31888 p25.kg4jpl.com 41000
# 31947 K0MGS Western Missouri/KC Metro # 31947 K0MGS Western Missouri/KC Metro
31947 p25.ddns.me 41000 31947 p25.ddns.me 41000
# 31983 K8JTK Hub Multimode ILS/DVMIS (K8JTK.org) # 31983 K8JTK Hub Multimode ILS/DVMIS (K8JTK.org)
31983 P25Reflector31983.K8JTK.org 41000 31983 P25Reflector31983.K8JTK.org 41000
@ -814,4 +813,3 @@
# 65101 KM4HJJ repeater Pompano, Florida # 65101 KM4HJJ repeater Pompano, Florida
65101 km4hjj-p25.dyndns-server.com 41000 65101 km4hjj-p25.dyndns-server.com 41000

View File

@ -26,7 +26,8 @@
CP25Network::CP25Network(unsigned short port, const std::string& callsign, bool debug) : CP25Network::CP25Network(unsigned short port, const std::string& callsign, bool debug) :
m_callsign(callsign), m_callsign(callsign),
m_socket(port), m_socket4(port),
m_socket6(port),
m_debug(debug) m_debug(debug)
{ {
assert(port > 0U); assert(port > 0U);
@ -42,7 +43,17 @@ bool CP25Network::open()
{ {
LogInfo("Opening P25 network connection"); LogInfo("Opening P25 network connection");
return m_socket.open(); sockaddr_storage addr4;
addr4.ss_family = AF_INET;
bool ret = m_socket4.open(addr4);
if (!ret)
return false;
sockaddr_storage addr6;
addr6.ss_family = AF_INET6;
return m_socket6.open(addr6);
} }
bool CP25Network::write(const unsigned char* data, unsigned int length, const sockaddr_storage& addr, unsigned int addrLen) bool CP25Network::write(const unsigned char* data, unsigned int length, const sockaddr_storage& addr, unsigned int addrLen)
@ -53,7 +64,15 @@ bool CP25Network::write(const unsigned char* data, unsigned int length, const so
if (m_debug) if (m_debug)
CUtils::dump(1U, "P25 Network Data Sent", data, length); CUtils::dump(1U, "P25 Network Data Sent", data, length);
return m_socket.write(data, length, addr, addrLen); switch (addr.ss_family) {
case AF_INET:
return m_socket4.write(data, length, addr, addrLen);
case AF_INET6:
return m_socket6.write(data, length, addr, addrLen);
default:
LogError("Unknown socket address family - %u", addr.ss_family);
return false;
}
} }
bool CP25Network::poll(const sockaddr_storage& addr, unsigned int addrLen) bool CP25Network::poll(const sockaddr_storage& addr, unsigned int addrLen)
@ -68,7 +87,15 @@ bool CP25Network::poll(const sockaddr_storage& addr, unsigned int addrLen)
if (m_debug) if (m_debug)
CUtils::dump(1U, "P25 Network Poll Sent", data, 11U); CUtils::dump(1U, "P25 Network Poll Sent", data, 11U);
return m_socket.write(data, 11U, addr, addrLen); switch (addr.ss_family) {
case AF_INET:
return m_socket4.write(data, 11U, addr, addrLen);
case AF_INET6:
return m_socket6.write(data, 11U, addr, addrLen);
default:
LogError("Unknown socket address family - %u", addr.ss_family);
return false;
}
} }
bool CP25Network::unlink(const sockaddr_storage& addr, unsigned int addrLen) bool CP25Network::unlink(const sockaddr_storage& addr, unsigned int addrLen)
@ -83,7 +110,15 @@ bool CP25Network::unlink(const sockaddr_storage& addr, unsigned int addrLen)
if (m_debug) if (m_debug)
CUtils::dump(1U, "P25 Network Unlink Sent", data, 11U); CUtils::dump(1U, "P25 Network Unlink Sent", data, 11U);
return m_socket.write(data, 11U, addr, addrLen); switch (addr.ss_family) {
case AF_INET:
return m_socket4.write(data, 11U, addr, addrLen);
case AF_INET6:
return m_socket6.write(data, 11U, addr, addrLen);
default:
LogError("Unknown socket address family - %u", addr.ss_family);
return false;
}
} }
unsigned int CP25Network::read(unsigned char* data, unsigned int length, sockaddr_storage& addr, unsigned int& addrLen) unsigned int CP25Network::read(unsigned char* data, unsigned int length, sockaddr_storage& addr, unsigned int& addrLen)
@ -91,7 +126,9 @@ unsigned int CP25Network::read(unsigned char* data, unsigned int length, sockadd
assert(data != NULL); assert(data != NULL);
assert(length > 0U); assert(length > 0U);
int len = m_socket.read(data, length, addr, addrLen); int len = m_socket4.read(data, length, addr, addrLen);
if (len <= 0)
len = m_socket6.read(data, length, addr, addrLen);
if (len <= 0) if (len <= 0)
return 0U; return 0U;
@ -103,7 +140,8 @@ unsigned int CP25Network::read(unsigned char* data, unsigned int length, sockadd
void CP25Network::close() void CP25Network::close()
{ {
m_socket.close(); m_socket4.close();
m_socket6.close();
LogInfo("Closing P25 network connection"); LogInfo("Closing P25 network connection");
} }

View File

@ -43,7 +43,8 @@ public:
private: private:
std::string m_callsign; std::string m_callsign;
CUDPSocket m_socket; CUDPSocket m_socket4;
CUDPSocket m_socket6;
bool m_debug; bool m_debug;
}; };