093998e9e2
The PTP daemon (PTPd) implements the Precision Time protocol (PTP) as defined by the IEEE 1588 standard. PTP was developed to provide very precise time coordination of LAN connected computers. with ckuethe@
71 lines
3.3 KiB
Plaintext
71 lines
3.3 KiB
Plaintext
$OpenBSD: patch-src_dep_net_c,v 1.1.1.1 2009/01/20 19:05:23 naddy Exp $
|
|
--- src/dep/net.c.orig Mon Apr 2 23:57:44 2007
|
|
+++ src/dep/net.c Sun Oct 26 13:38:49 2008
|
|
@@ -8,26 +8,26 @@ Boolean lookupSubdomainAddress(Octet *subdomainName, O
|
|
|
|
/* set multicast group address based on subdomainName */
|
|
if (!memcmp(subdomainName, DEFAULT_PTP_DOMAIN_NAME, PTP_SUBDOMAIN_NAME_LENGTH))
|
|
- memcpy(subdomainAddress, DEFAULT_PTP_DOMAIN_ADDRESS, NET_ADDRESS_LENGTH);
|
|
+ strncpy(subdomainAddress, DEFAULT_PTP_DOMAIN_ADDRESS, NET_ADDRESS_LENGTH);
|
|
else if(!memcmp(subdomainName, ALTERNATE_PTP_DOMAIN1_NAME, PTP_SUBDOMAIN_NAME_LENGTH))
|
|
- memcpy(subdomainAddress, ALTERNATE_PTP_DOMAIN1_ADDRESS, NET_ADDRESS_LENGTH);
|
|
+ strncpy(subdomainAddress, ALTERNATE_PTP_DOMAIN1_ADDRESS, NET_ADDRESS_LENGTH);
|
|
else if(!memcmp(subdomainName, ALTERNATE_PTP_DOMAIN2_NAME, PTP_SUBDOMAIN_NAME_LENGTH))
|
|
- memcpy(subdomainAddress, ALTERNATE_PTP_DOMAIN2_ADDRESS, NET_ADDRESS_LENGTH);
|
|
+ strncpy(subdomainAddress, ALTERNATE_PTP_DOMAIN2_ADDRESS, NET_ADDRESS_LENGTH);
|
|
else if(!memcmp(subdomainName, ALTERNATE_PTP_DOMAIN3_NAME, PTP_SUBDOMAIN_NAME_LENGTH))
|
|
- memcpy(subdomainAddress, ALTERNATE_PTP_DOMAIN3_ADDRESS, NET_ADDRESS_LENGTH);
|
|
+ strncpy(subdomainAddress, ALTERNATE_PTP_DOMAIN3_ADDRESS, NET_ADDRESS_LENGTH);
|
|
else
|
|
{
|
|
h = crc_algorithm(subdomainName, PTP_SUBDOMAIN_NAME_LENGTH) % 3;
|
|
switch(h)
|
|
{
|
|
case 0:
|
|
- memcpy(subdomainAddress, ALTERNATE_PTP_DOMAIN1_ADDRESS, NET_ADDRESS_LENGTH);
|
|
+ strncpy(subdomainAddress, ALTERNATE_PTP_DOMAIN1_ADDRESS, NET_ADDRESS_LENGTH);
|
|
break;
|
|
case 1:
|
|
- memcpy(subdomainAddress, ALTERNATE_PTP_DOMAIN2_ADDRESS, NET_ADDRESS_LENGTH);
|
|
+ strncpy(subdomainAddress, ALTERNATE_PTP_DOMAIN2_ADDRESS, NET_ADDRESS_LENGTH);
|
|
break;
|
|
case 2:
|
|
- memcpy(subdomainAddress, ALTERNATE_PTP_DOMAIN3_ADDRESS, NET_ADDRESS_LENGTH);
|
|
+ strncpy(subdomainAddress, ALTERNATE_PTP_DOMAIN3_ADDRESS, NET_ADDRESS_LENGTH);
|
|
break;
|
|
default:
|
|
ERROR("handle out of range for '%s'!\n", subdomainName);
|
|
@@ -229,6 +229,7 @@ Boolean netInit(NetPath *netPath, RunTimeOpts *rtOpts,
|
|
struct in_addr interfaceAddr, netAddr;
|
|
struct sockaddr_in addr;
|
|
struct ip_mreq imr;
|
|
+ unsigned char c;
|
|
char addrStr[NET_ADDRESS_LENGTH];
|
|
char *s;
|
|
|
|
@@ -332,18 +333,18 @@ Boolean netInit(NetPath *netPath, RunTimeOpts *rtOpts,
|
|
}
|
|
|
|
/* set socket time-to-live to 1 */
|
|
- temp = 1;
|
|
- if( setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_TTL, &temp, sizeof(int)) < 0
|
|
- || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_TTL, &temp, sizeof(int)) < 0 )
|
|
+ c = 1;
|
|
+ if( setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_TTL, &c, sizeof(c)) < 0
|
|
+ || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_TTL, &c, sizeof(c)) < 0 )
|
|
{
|
|
PERROR("failed to set the multi-cast time-to-live");
|
|
return FALSE;
|
|
}
|
|
|
|
/* enable loopback */
|
|
- temp = 1;
|
|
- if( setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_LOOP, &temp, sizeof(int)) < 0
|
|
- || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_LOOP, &temp, sizeof(int)) < 0 )
|
|
+ c = 1;
|
|
+ if( setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_LOOP, &c, sizeof(c)) < 0
|
|
+ || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_LOOP, &c, sizeof(c)) < 0 )
|
|
{
|
|
PERROR("failed to enable multi-cast loopback");
|
|
return FALSE;
|