Make Clixon build on MacOS.

This commit is contained in:
Kristofer Hallin 2022-08-16 08:34:26 +02:00
parent 9de052c144
commit 68b528ac0b
10 changed files with 112 additions and 12 deletions

View file

@ -45,7 +45,13 @@ CPPFLAGS += -fPIC
endif endif
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = @SH_SUFFIX@
LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@ LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
ifneq ($(LINKAGE),dynamic) ifneq ($(LINKAGE),dynamic)
LDFLAGS += -rdynamic -L. LDFLAGS += -rdynamic -L.

View file

@ -49,7 +49,13 @@ CPPFLAGS += -fPIC
endif endif
SH_SUFFIX = @SH_SUFFIX@ SH_SUFFIX = @SH_SUFFIX@
LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@ LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
ifneq ($(LINKAGE),dynamic) ifneq ($(LINKAGE),dynamic)
# -rdynamic for using -ldl # -rdynamic for using -ldl

View file

@ -38,7 +38,13 @@ top_srcdir = @top_srcdir@
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
LINKAGE = @LINKAGE@ LINKAGE = @LINKAGE@
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
prefix = @prefix@ prefix = @prefix@

View file

@ -41,7 +41,13 @@ top_srcdir = @top_srcdir@
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
LINKAGE = @LINKAGE@ LINKAGE = @LINKAGE@
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
prefix = @prefix@ prefix = @prefix@

View file

@ -37,7 +37,13 @@ top_srcdir = @top_srcdir@
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
LINKAGE = @LINKAGE@ LINKAGE = @LINKAGE@
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
prefix = @prefix@ prefix = @prefix@

View file

@ -60,7 +60,13 @@ CLIXON_DEFAULT_CONFIG = @CLIXON_DEFAULT_CONFIG@
CC = @CC@ CC = @CC@
CFLAGS = @CFLAGS@ -fPIC CFLAGS = @CFLAGS@ -fPIC
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
with_restconf = @with_restconf@ with_restconf = @with_restconf@
INCLUDES = -I$(includedir) @INCLUDES@ INCLUDES = -I$(includedir) @INCLUDES@

View file

@ -61,7 +61,13 @@ SH_SUFFIX = @SH_SUFFIX@
LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@ LIBSTATIC_SUFFIX = @LIBSTATIC_SUFFIX@
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ INSTALL_LIB = @INSTALL@
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@ LIBS = @LIBS@

View file

@ -134,12 +134,26 @@ create_socket(struct sockaddr *sa,
goto done; goto done;
} }
/* create inet socket */ /* 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) { 0)) < 0) {
clicon_err(OE_UNIX, errno, "socket"); clicon_err(OE_UNIX, errno, "socket");
goto done; 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) { if (setsockopt(s, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on)) == -1) {
clicon_err(OE_UNIX, errno, "setsockopt SO_KEEPALIVE"); clicon_err(OE_UNIX, errno, "setsockopt SO_KEEPALIVE");
goto done; goto done;
@ -201,11 +215,30 @@ fork_netns_socket(const char *netns,
char nspath[MAXPATHLEN]; /* Path to namespace file */ char nspath[MAXPATHLEN]; /* Path to namespace file */
struct stat st; 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); 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"); clicon_err(OE_UNIX, errno, "socketpair");
goto done; 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 */ /* Check namespace exists */
sprintf(nspath,"/var/run/netns/%s", netns); sprintf(nspath,"/var/run/netns/%s", netns);
if (stat(nspath, &st) < 0){ if (stat(nspath, &st) < 0){

View file

@ -181,15 +181,34 @@ clixon_proc_socket(char **argv,
sigfn_t oldhandler = NULL; sigfn_t oldhandler = NULL;
sigset_t oset; sigset_t oset;
int sig = 0; int sig = 0;
#ifdef __APPLE__
int sock_flags = SOCK_DGRAM;
#else
int sock_flags = SOCK_DGRAM | SOCK_CLOEXEC;
#endif
if (argv == NULL){ if (argv == NULL){
clicon_err(OE_UNIX, EINVAL, "argv is NULL"); clicon_err(OE_UNIX, EINVAL, "argv is NULL");
goto done; 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"); clicon_err(OE_UNIX, errno, "socketpair");
goto done; 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); sigprocmask(0, NULL, &oset);
set_signal(SIGINT, clixon_proc_sigint, &oldhandler); set_signal(SIGINT, clixon_proc_sigint, &oldhandler);
sig++; sig++;

View file

@ -59,7 +59,13 @@ CC = @CC@
CFLAGS = @CFLAGS@ CFLAGS = @CFLAGS@
INSTALL = @INSTALL@ INSTALL = @INSTALL@
INSTALL_LIB = @INSTALL@ INSTALL_LIB = @INSTALL@
INSTALLFLAGS = @INSTALLFLAGS@
ifeq ($(HOST_VENDOR),apple)
INSTALLFLAGS =
else
INSTALLFLAGS = @INSTALLFLAGS@
endif
LDFLAGS = @LDFLAGS@ LDFLAGS = @LDFLAGS@
LIBS = @LIBS@ LIBS = @LIBS@
CPPFLAGS = @CPPFLAGS@ CPPFLAGS = @CPPFLAGS@