Skip to content

Commit

Permalink
fix ip byte order
Browse files Browse the repository at this point in the history
  • Loading branch information
Ing-Dom committed May 21, 2024
1 parent 76013e8 commit 3811586
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 6 deletions.
2 changes: 1 addition & 1 deletion src/esp32_platform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -102,7 +102,7 @@ bool Esp32Platform::sendBytesMultiCast(uint8_t * buffer, uint16_t len)
int Esp32Platform::readBytesMultiCast(uint8_t * buffer, uint16_t maxLen, uint32_t& src_addr, uint16_t& src_port)
{
int len = _udp.parsePacket();
src_addr = _udp.remoteIP();
src_addr = htonl(_udp.remoteIP());
src_port = _udp.remotePort();
if (len == 0)
return 0;
Expand Down
31 changes: 27 additions & 4 deletions src/knx/ip_data_link_layer.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -793,6 +793,10 @@ void IpDataLinkLayer::loopHandleConnectRequest(uint8_t* buffer, uint16_t length,
if(_lastChannelId == 255)
_lastChannelId = 0;

tun->IpAddress = srcIP;
tun->PortData = srcPort;
tun->PortCtrl = connRequest.hpaiCtrl().ipPortNumber()?connRequest.hpaiCtrl().ipPortNumber():srcPort;

#ifdef KNX_LOG_TUNNELING
print(">>> new tunnel[");
print(tunIdx);
Expand All @@ -804,11 +808,30 @@ void IpDataLinkLayer::loopHandleConnectRequest(uint8_t* buffer, uint16_t length,
print((tun->IndividualAddress >> 8) & 0xF);
print(".");
println(tun->IndividualAddress & 0xFF);
#endif

tun->IpAddress = srcIP;
tun->PortData = srcPort;
tun->PortCtrl = connRequest.hpaiCtrl().ipPortNumber()?connRequest.hpaiCtrl().ipPortNumber():srcPort;
print(">>> Data Endpoint: ");
ip = tun->IpAddress;
print(ip >> 24);
print(".");
print((ip >> 16) & 0xFF);
print(".");
print((ip >> 8) & 0xFF);
print(".");
print(ip & 0xFF);
print(":");
println(tun->PortData);
print(">>> Ctrl Endpoint: ");
ip = tun->IpAddress;
print(ip >> 24);
print(".");
print((ip >> 16) & 0xFF);
print(".");
print((ip >> 8) & 0xFF);
print(".");
print(ip & 0xFF);
print(":");
println(tun->PortCtrl);
#endif

KnxIpConnectResponse connRes(_ipParameters, tun->IndividualAddress, 3671, tun->ChannelId, connRequest.cri().type());
_platform.sendBytesUniCast(tun->IpAddress, tun->PortCtrl, connRes.data(), connRes.totalLength());
Expand Down
2 changes: 1 addition & 1 deletion src/rp2040_arduino_platform.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -339,7 +339,7 @@ int RP2040ArduinoPlatform::readBytesMultiCast(uint8_t* buffer, uint16_t maxLen,
_udp.read(buffer, len);
_remoteIP = _udp.remoteIP();
_remotePort = _udp.remotePort();
src_addr = _remoteIP;
src_addr = htonl(_remoteIP);
src_port = _remotePort;

// print("Remote IP: ");
Expand Down

0 comments on commit 3811586

Please sign in to comment.