diff --git a/apps/backend/Makefile.in b/apps/backend/Makefile.in index de9fcf8d..cd96971c 100644 --- a/apps/backend/Makefile.in +++ b/apps/backend/Makefile.in @@ -45,7 +45,13 @@ CPPFLAGS += -fPIC endif SH_SUFFIX = @SH_SUFFIX@ LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@ -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + LDFLAGS = @LDFLAGS@ ifneq ($(LINKAGE),dynamic) LDFLAGS += -rdynamic -L. diff --git a/apps/cli/Makefile.in b/apps/cli/Makefile.in index f334aaac..d67d789d 100644 --- a/apps/cli/Makefile.in +++ b/apps/cli/Makefile.in @@ -49,7 +49,13 @@ CPPFLAGS += -fPIC endif SH_SUFFIX = @SH_SUFFIX@ LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@ -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + LDFLAGS = @LDFLAGS@ ifneq ($(LINKAGE),dynamic) # -rdynamic for using -ldl diff --git a/apps/netconf/Makefile.in b/apps/netconf/Makefile.in index 43025097..8289b53e 100644 --- a/apps/netconf/Makefile.in +++ b/apps/netconf/Makefile.in @@ -38,7 +38,13 @@ top_srcdir = @top_srcdir@ CC = @CC@ CFLAGS = @CFLAGS@ LINKAGE = @LINKAGE@ -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + LDFLAGS = @LDFLAGS@ prefix = @prefix@ diff --git a/apps/restconf/Makefile.in b/apps/restconf/Makefile.in index 22c6eea2..58436994 100644 --- a/apps/restconf/Makefile.in +++ b/apps/restconf/Makefile.in @@ -41,7 +41,13 @@ top_srcdir = @top_srcdir@ CC = @CC@ CFLAGS = @CFLAGS@ LINKAGE = @LINKAGE@ -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + LDFLAGS = @LDFLAGS@ prefix = @prefix@ diff --git a/apps/snmp/Makefile.in b/apps/snmp/Makefile.in index b39fe187..46d2ec16 100644 --- a/apps/snmp/Makefile.in +++ b/apps/snmp/Makefile.in @@ -37,7 +37,13 @@ top_srcdir = @top_srcdir@ CC = @CC@ CFLAGS = @CFLAGS@ LINKAGE = @LINKAGE@ -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + LDFLAGS = @LDFLAGS@ prefix = @prefix@ diff --git a/example/main/Makefile.in b/example/main/Makefile.in index 88b3f356..f9eaf2ef 100644 --- a/example/main/Makefile.in +++ b/example/main/Makefile.in @@ -60,7 +60,13 @@ CLIXON_DEFAULT_CONFIG = @CLIXON_DEFAULT_CONFIG@ CC = @CC@ CFLAGS = @CFLAGS@ -fPIC -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + with_restconf = @with_restconf@ INCLUDES = -I$(includedir) @INCLUDES@ diff --git a/lib/src/Makefile.in b/lib/src/Makefile.in index 66096ce9..fd13b974 100644 --- a/lib/src/Makefile.in +++ b/lib/src/Makefile.in @@ -61,7 +61,13 @@ SH_SUFFIX = @SH_SUFFIX@ LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@ INSTALL = @INSTALL@ INSTALL_LIB = @INSTALL@ -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ diff --git a/lib/src/clixon_netns.c b/lib/src/clixon_netns.c index 24720694..a1d54b19 100644 --- a/lib/src/clixon_netns.c +++ b/lib/src/clixon_netns.c @@ -134,12 +134,26 @@ create_socket(struct sockaddr *sa, goto done; } /* create inet socket */ - if ((s = socket(sa->sa_family, - SOCK_STREAM | SOCK_CLOEXEC | flags, + +#ifndef __APPLE__ + flags = SOCK_STREAM | SOCK_CLOEXEC | flags; +#else + flags = SOCK_STREAM | flags; +#endif + + if ((s = socket(sa->sa_family, flags, 0)) < 0) { clicon_err(OE_UNIX, errno, "socket"); goto done; } + +#ifdef __APPLE__ + if (fcntl(s, O_CLOEXEC)) { + clicon_err(OE_UNIX, errno, "fcntl"); + goto done; + } +#endif + if (setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on)) == -1) { clicon_err(OE_UNIX, errno, "setsockopt SO_KEEPALIVE"); goto done; @@ -201,11 +215,30 @@ fork_netns_socket(const char *netns, char nspath[MAXPATHLEN]; /* Path to namespace file */ struct stat st; +#ifdef __APPLE__ + int sock_flags = SOCK_DGRAM; +#else + int sock_flags = SOCK_DGRAM | SOCK_CLOEXEC; +#endif + clicon_debug(1, "%s %s", __FUNCTION__, netns); - if (socketpair(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0, sp) < 0){ + if (socketpair(AF_UNIX, sock_flags, 0, sp) < 0){ clicon_err(OE_UNIX, errno, "socketpair"); goto done; } + +#ifdef __APPLE__ + if (fcntl(sp[0], O_CLOEXEC)) { + clicon_err(OE_UNIX, errno, "fcntl, sp[0]"); + goto done; + } + + if (fcntl(sp[1], O_CLOEXEC)) { + clicon_err(OE_UNIX, errno, "fcntl, sp[1]"); + goto done; + } +#endif + /* Check namespace exists */ sprintf(nspath,"/var/run/netns/%s", netns); if (stat(nspath, &st) < 0){ diff --git a/lib/src/clixon_proc.c b/lib/src/clixon_proc.c index e1e63726..c789fe14 100644 --- a/lib/src/clixon_proc.c +++ b/lib/src/clixon_proc.c @@ -181,15 +181,34 @@ clixon_proc_socket(char **argv, sigfn_t oldhandler = NULL; sigset_t oset; int sig = 0; + +#ifdef __APPLE__ + int sock_flags = SOCK_DGRAM; +#else + int sock_flags = SOCK_DGRAM | SOCK_CLOEXEC; +#endif if (argv == NULL){ clicon_err(OE_UNIX, EINVAL, "argv is NULL"); goto done; } - if (socketpair(AF_UNIX, SOCK_DGRAM|SOCK_CLOEXEC, 0, sp) < 0){ + if (socketpair(AF_UNIX, sock_flags, 0, sp) < 0){ clicon_err(OE_UNIX, errno, "socketpair"); goto done; } + +#ifdef __APPLE__ + if (fcntl(sp[0], O_CLOEXEC)) { + clicon_err(OE_UNIX, errno, "fcntl, sp[0]"); + goto done; + } + + if (fcntl(sp[1], O_CLOEXEC)) { + clicon_err(OE_UNIX, errno, "fcntl, sp[1]"); + goto done; + } +#endif + sigprocmask(0, NULL, &oset); set_signal(SIGINT, clixon_proc_sigint, &oldhandler); sig++; diff --git a/util/Makefile.in b/util/Makefile.in index b716490b..593478d8 100644 --- a/util/Makefile.in +++ b/util/Makefile.in @@ -59,7 +59,13 @@ CC = @CC@ CFLAGS = @CFLAGS@ INSTALL = @INSTALL@ INSTALL_LIB = @INSTALL@ -INSTALLFLAGS = @INSTALLFLAGS@ + +ifeq ($(HOST_VENDOR),apple) +INSTALLFLAGS = +else +INSTALLFLAGS = @INSTALLFLAGS@ +endif + LDFLAGS = @LDFLAGS@ LIBS = @LIBS@ CPPFLAGS = @CPPFLAGS@