Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Jun 2016 07:39:25 +0000 (UTC)
From:      Hiroki Sato <hrs@FreeBSD.org>
To:        ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org
Subject:   svn commit: r416877 - head/net/smcroute/files
Message-ID:  <201606140739.u5E7dP8r017149@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: hrs
Date: Tue Jun 14 07:39:24 2016
New Revision: 416877
URL: https://svnweb.freebsd.org/changeset/ports/416877

Log:
  Fix build on 9.x.

Added:
  head/net/smcroute/files/patch-ipc.c   (contents, props changed)
  head/net/smcroute/files/patch-mcgroup.c   (contents, props changed)
  head/net/smcroute/files/patch-mroute-api.c   (contents, props changed)

Added: head/net/smcroute/files/patch-ipc.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/smcroute/files/patch-ipc.c	Tue Jun 14 07:39:24 2016	(r416877)
@@ -0,0 +1,52 @@
+--- ipc.c.orig	2016-02-17 21:02:06 UTC
++++ ipc.c
+@@ -50,9 +50,22 @@ int ipc_server_init(void)
+ 	if (server_sd >= 0)
+ 		close(server_sd);
+ 
++#ifdef SOCK_CLOEXEC
+ 	server_sd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
++#else
++	server_sd = socket(AF_UNIX, SOCK_STREAM, 0);
++#endif
+ 	if (server_sd < 0)
+ 		return -1;
++#ifndef SOCK_CLOEXEC
++	if (fcntl(server_sd, F_SETFD, FD_CLOEXEC) < 0) {
++		int err = errno;
++		close(server_sd);
++		server_sd = -1;
++		errno = err;
++		return server_sd;
++	}
++#endif
+ 
+ #ifdef HAVE_SOCKADDR_UN_SUN_LEN
+ 	sa.sun_len = 0;	/* <- correct length is set by the OS */
+@@ -89,10 +102,26 @@ int ipc_client_init(void)
+ 	if (client_sd >= 0)
+ 		close(client_sd);
+ 
++#ifdef SOCK_CLOEXEC
+ 	client_sd = socket(AF_UNIX, SOCK_STREAM | SOCK_CLOEXEC, 0);
++#else
++	client_sd = socket(AF_UNIX, SOCK_STREAM, 0);
++#endif
+ 	if (client_sd < 0)
+ 		return -1;
+ 
++#ifndef SOCK_CLOEXEC
++	if (fcntl(client_sd, F_SETFD, FD_CLOEXEC) < 0) {
++		int err = errno;
++
++		close(client_sd);
++		client_sd = -1;
++
++		errno = err;
++		return -1;
++	}
++#endif
++
+ #ifdef HAVE_SOCKADDR_UN_SUN_LEN
+ 	sa.sun_len = 0;	/* <- correct length is set by the OS */
+ #endif

Added: head/net/smcroute/files/patch-mcgroup.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/smcroute/files/patch-mcgroup.c	Tue Jun 14 07:39:24 2016	(r416877)
@@ -0,0 +1,50 @@
+--- mcgroup.c.orig	2016-02-17 21:02:06 UTC
++++ mcgroup.c
+@@ -54,11 +54,23 @@ static struct iface *find_valid_iface(co
+ static void mcgroup4_init(void)
+ {
+ 	if (mcgroup4_socket < 0) {
++#ifdef SOCK_CLOEXEC
+ 		mcgroup4_socket = socket(AF_INET, SOCK_DGRAM | SOCK_CLOEXEC, 0);
++#else
++		mcgroup4_socket = socket(AF_INET, SOCK_DGRAM, 0);
++#endif
+ 		if (mcgroup4_socket < 0) {
+ 			smclog(LOG_ERR, "Failed creating socket for joining IPv4 multicast groups: %m");
+ 			exit(255);
+ 		}
++#ifndef SOCK_CLOEXEC
++		if (fcntl(mcgroup4_socket, F_SETFD, FD_CLOEXEC) < 0) {
++			smclog(LOG_WARNING, "Failed creating socket for joining IPv4 multicast groups: %m");
++			close(mcgroup4_socket);
++			mcgroup4_socket = -1;
++			return;
++		}
++#endif
+ 
+ #ifdef __linux__
+ 		if (setsockopt(mcgroup4_socket, SOL_SOCKET, SO_ATTACH_FILTER, &fprog, sizeof(fprog)) < 0)
+@@ -132,11 +144,23 @@ static int mcgroup6_socket = -1;
+ static void mcgroup6_init(void)
+ {
+ 	if (mcgroup6_socket < 0) {
++#ifdef SOCK_CLOEXEC
+ 		mcgroup6_socket = socket(AF_INET6, SOCK_DGRAM | SOCK_CLOEXEC, IPPROTO_UDP);
++#else
++		mcgroup6_socket = socket(AF_INET6, SOCK_DGRAM, IPPROTO_UDP);
++#endif
+ 		if (mcgroup6_socket < 0) {
+ 			smclog(LOG_WARNING, "Failed creating socket for joining IPv6 multicast groups: %m");
+ 			return;
+ 		}
++#ifndef SOCK_CLOEXEC
++		if (fcntl(mcgroup6_socket, F_SETFD, FD_CLOEXEC) < 0) {
++			smclog(LOG_WARNING, "Failed creating socket for joining IPv6 multicast groups: %m");
++			close(mcgroup6_socket);
++			mcgroup6_socket = -1;
++			return;
++		}
++#endif
+ 
+ #ifdef __linux__
+ 		if (setsockopt(mcgroup6_socket, SOL_SOCKET, SO_ATTACH_FILTER, &fprog, sizeof(fprog)) < 0)

Added: head/net/smcroute/files/patch-mroute-api.c
==============================================================================
--- /dev/null	00:00:00 1970	(empty, because file is newly added)
+++ head/net/smcroute/files/patch-mroute-api.c	Tue Jun 14 07:39:24 2016	(r416877)
@@ -0,0 +1,55 @@
+--- mroute-api.c.orig	2016-02-17 21:02:06 UTC
++++ mroute-api.c
+@@ -98,13 +98,26 @@ int mroute4_enable(void)
+ 	unsigned int i;
+ 	struct iface *iface;
+ 
++#ifdef SOCK_CLOEXEC
+ 	mroute4_socket = socket(AF_INET, SOCK_RAW | SOCK_CLOEXEC, IPPROTO_IGMP);
++#else
++	mroute4_socket = socket(AF_INET, SOCK_RAW, IPPROTO_IGMP);
++#endif
+ 	if (mroute4_socket < 0) {
+ 		if (ENOPROTOOPT == errno)
+ 			smclog(LOG_WARNING, "Kernel does not support IPv4 multicast routing, skipping ...");
+ 
+ 		return -1;
+ 	}
++#ifndef SOCK_CLOEXEC
++	if (fcntl(mroute4_socket, F_SETFD, FD_CLOEXEC) < 0) {
++		smclog(LOG_INIT, "Failed initializing IPv4 multicast routing API: %m");
++		close(mroute4_socket);
++		mroute4_socket = -1;
++
++		return -1;
++	}
++#endif
+ 
+ 	if (setsockopt(mroute4_socket, IPPROTO_IP, MRT_INIT, (void *)&arg, sizeof(arg))) {
+ 		switch (errno) {
+@@ -472,12 +485,25 @@ int mroute6_enable(void)
+ 	unsigned int i;
+ 	struct iface *iface;
+ 
++#ifdef SOCK_CLOEXEC
+ 	if ((mroute6_socket = socket(AF_INET6, SOCK_RAW | SOCK_CLOEXEC, IPPROTO_ICMPV6)) < 0) {
++#else
++	if ((mroute6_socket = socket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6)) < 0) {
++#endif
+ 		if (ENOPROTOOPT == errno)
+ 			smclog(LOG_WARNING, "Kernel does not support IPv6 multicast routing, skipping ...");
+ 
+ 		return -1;
+ 	}
++#ifndef SOCK_CLOEXEC
++	if (fcntl(mroute6_socket, F_SETFD, FD_CLOEXEC) < 0) {
++		smclog(LOG_INIT, "Failed initializing IPv6 multicast routing API: %m");
++		close(mroute6_socket);
++		mroute6_socket = -1;
++
++		return -1;
++	}
++#endif
+ 	if (setsockopt(mroute6_socket, IPPROTO_IPV6, MRT6_INIT, (void *)&arg, sizeof(arg))) {
+ 		switch (errno) {
+ 		case EADDRINUSE:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201606140739.u5E7dP8r017149>