From: <mbu...@us...> - 2011-10-26 12:34:14
|
Revision: 147 http://ptpd.svn.sourceforge.net/ptpd/?rev=147&view=rev Author: mburnicki Date: 2011-10-26 12:34:03 +0000 (Wed, 26 Oct 2011) Log Message: ----------- Patch contributed by: Jan Breuer <jan...@ja...> Reviewed by: mburnicki Fixed a bug in unicast implementation. General functions used eventSock instead of generalSock. netSendPeerEvent does not loopback unicast messages. Modified Paths: -------------- branches/v2/src/dep/net.c branches/v2-natinstr/src/dep/net.c Modified: branches/v2/src/dep/net.c =================================================================== --- branches/v2/src/dep/net.c 2011-10-26 11:31:04 UTC (rev 146) +++ branches/v2/src/dep/net.c 2011-10-26 12:34:03 UTC (rev 147) @@ -969,9 +969,9 @@ addr.sin_family = AF_INET; addr.sin_port = htons(PTP_EVENT_PORT); - if(netPath->unicastAddr || alt_dst ){ - if (netPath->unicastAddr) { - addr.sin_addr.s_addr = netPath->unicastAddr; + if (netPath->unicastAddr || alt_dst ) { + if (netPath->unicastAddr) { + addr.sin_addr.s_addr = netPath->unicastAddr; } else { addr.sin_addr.s_addr = alt_dst; } @@ -1023,7 +1023,7 @@ } - ret = sendto(netPath->eventSock, buf, length, 0, + ret = sendto(netPath->generalSock, buf, length, 0, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)); if (ret <= 0) @@ -1053,7 +1053,7 @@ if (netPath->unicastAddr) { addr.sin_addr.s_addr = netPath->unicastAddr; - ret = sendto(netPath->eventSock, buf, length, 0, + ret = sendto(netPath->generalSock, buf, length, 0, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)); if (ret <= 0) @@ -1089,6 +1089,18 @@ sizeof(struct sockaddr_in)); if (ret <= 0) DBG("error sending uni-cast event message\n"); + + /* + * Need to forcibly loop back the packet since + * we are not using multicast. + */ + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + + ret = sendto(netPath->eventSock, buf, length, 0, + (struct sockaddr *)&addr, + sizeof(struct sockaddr_in)); + if (ret <= 0) + DBG("error looping back uni-cast event message\n"); } else { addr.sin_addr.s_addr = netPath->peerMulticastAddr; Modified: branches/v2-natinstr/src/dep/net.c =================================================================== --- branches/v2-natinstr/src/dep/net.c 2011-10-26 11:31:04 UTC (rev 146) +++ branches/v2-natinstr/src/dep/net.c 2011-10-26 12:34:03 UTC (rev 147) @@ -910,9 +910,9 @@ addr.sin_family = AF_INET; addr.sin_port = htons(PTP_EVENT_PORT); - if(netPath->unicastAddr || alt_dst ){ - if (netPath->unicastAddr) { - addr.sin_addr.s_addr = netPath->unicastAddr; + if (netPath->unicastAddr || alt_dst ) { + if (netPath->unicastAddr) { + addr.sin_addr.s_addr = netPath->unicastAddr; } else { addr.sin_addr.s_addr = alt_dst; } @@ -964,7 +964,7 @@ } - ret = sendto(netPath->eventSock, buf, length, 0, + ret = sendto(netPath->generalSock, buf, length, 0, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)); if (ret <= 0) @@ -994,7 +994,7 @@ if (netPath->unicastAddr) { addr.sin_addr.s_addr = netPath->unicastAddr; - ret = sendto(netPath->eventSock, buf, length, 0, + ret = sendto(netPath->generalSock, buf, length, 0, (struct sockaddr *)&addr, sizeof(struct sockaddr_in)); if (ret <= 0) @@ -1030,6 +1030,18 @@ sizeof(struct sockaddr_in)); if (ret <= 0) DBG("error sending uni-cast event message\n"); + + /* + * Need to forcibly loop back the packet since + * we are not using multicast. + */ + addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); + + ret = sendto(netPath->eventSock, buf, length, 0, + (struct sockaddr *)&addr, + sizeof(struct sockaddr_in)); + if (ret <= 0) + DBG("error looping back uni-cast event message\n"); } else { addr.sin_addr.s_addr = netPath->peerMulticastAddr; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |