openbsd-ports/net/ptpd/patches/patch-src_dep_net_c
naddy b01e80ab22 * Update to 1.1.0.
* Replace MESSAGE with rc file.
* Drop maintainership.
* Set PORTROACH.

ptpd-1.x implements PTPv1 (IEEE 1588-2002)
ptpd-2.x implements PTPv2 (IEEE 1588-2008)
PTPv2 is not backward compatible with PTPv1.
2017-09-09 21:22:49 +00:00

93 lines
4.2 KiB
Plaintext

$OpenBSD: patch-src_dep_net_c,v 1.2 2017/09/09 21:22:49 naddy Exp $
Index: src/dep/net.c
--- src/dep/net.c.orig
+++ src/dep/net.c
@@ -16,24 +16,24 @@ lookupSubdomainAddress(Octet * subdomainName, Octet *
/* 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);
@@ -217,6 +217,7 @@ netInit(NetPath * netPath, RunTimeOpts * rtOpts, PtpCl
struct in_addr interfaceAddr, netAddr;
struct sockaddr_in addr;
struct ip_mreq imr;
+ unsigned char c;
char addrStr[NET_ADDRESS_LENGTH];
char *s;
@@ -304,22 +305,23 @@ netInit(NetPath * netPath, RunTimeOpts * rtOpts, PtpCl
return FALSE;
}
/* set socket time-to-live */
- if (setsockopt(netPath->eventSock, IPPROTO_IP, IP_MULTICAST_TTL, &rtOpts->ttl, sizeof(int)) < 0
- || setsockopt(netPath->generalSock, IPPROTO_IP, IP_MULTICAST_TTL, &rtOpts->ttl, sizeof(int)) < 0) {
+ c = rtOpts->ttl;
+ 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;
}
/* make timestamps available through recvmsg() */
temp = 1;
-#if defined(linux)
+#if defined(linux) || defined(__NetBSD__) || defined(__OpenBSD__)
if (setsockopt(netPath->eventSock, SOL_SOCKET, SO_TIMESTAMP, &temp, sizeof(int)) < 0
|| setsockopt(netPath->generalSock, SOL_SOCKET, SO_TIMESTAMP, &temp, sizeof(int)) < 0) {
#else /* BSD */
@@ -405,7 +407,7 @@ netRecvEvent(Octet * buf, TimeInternal * time, NetPath
char control[CMSG_SPACE(sizeof(struct timeval))];
} cmsg_un;
struct cmsghdr *cmsg;
-#if defined(linux)
+#if defined(linux) || defined(__NetBSD__) || defined(__OpenBSD__)
struct timeval *tv;
#else /* FreeBSD */
struct timespec ts;
@@ -454,7 +456,7 @@ netRecvEvent(Octet * buf, TimeInternal * time, NetPath
return 0;
}
-#if defined(linux)
+#if defined(linux) || defined(__NetBSD__) || defined(__OpenBSD__)
tv = 0;
for (cmsg = CMSG_FIRSTHDR(&msg); cmsg != NULL;
cmsg = CMSG_NXTHDR(&msg, cmsg))