summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt2
-rw-r--r--include/ouroboros/CMakeLists.txt6
-rw-r--r--include/ouroboros/sockets.h.in (renamed from include/ouroboros/sockets.h)5
-rw-r--r--src/ipcpd/ipcp.c4
-rw-r--r--src/irmd/ipcp.c4
-rw-r--r--src/irmd/main.c4
-rw-r--r--src/lib/sockets.c15
7 files changed, 26 insertions, 14 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 1f888d1e..062d92b2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,7 @@ include(GNUInstallDirs)
set(PACKAGE_VERSION_MAJOR 0)
set(PACKAGE_VERSION_MINOR 11)
-set(PACKAGE_VERSION_PATCH 2)
+set(PACKAGE_VERSION_PATCH 3)
set(PACKAGE_NAME "${CMAKE_PROJECT_NAME}")
set(PACKAGE_DESCRIPTION "The Ouroboros prototype")
diff --git a/include/ouroboros/CMakeLists.txt b/include/ouroboros/CMakeLists.txt
index c0a83030..fe0ccf5d 100644
--- a/include/ouroboros/CMakeLists.txt
+++ b/include/ouroboros/CMakeLists.txt
@@ -1,6 +1,12 @@
configure_file("${CMAKE_CURRENT_SOURCE_DIR}/version.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/version.h" @ONLY)
+set(SOCK_BUF_SIZE 10240 CACHE STRING
+ "Size of the buffer used by the UNIX sockets for local IPC")
+
+configure_file("${CMAKE_CURRENT_SOURCE_DIR}/sockets.h.in"
+ "${CMAKE_CURRENT_BINARY_DIR}/sockets.h" @ONLY)
+
set(HEADER_FILES
cacep.h
cdefs.h
diff --git a/include/ouroboros/sockets.h b/include/ouroboros/sockets.h.in
index 36ea4da9..4557a9ef 100644
--- a/include/ouroboros/sockets.h
+++ b/include/ouroboros/sockets.h.in
@@ -40,10 +40,9 @@ typedef IpcpMsg ipcp_msg_t;
#define SOCK_PATH_SUFFIX ".sock"
#define IRM_SOCK_PATH SOCK_PATH "irm" SOCK_PATH_SUFFIX
-#define IRM_MSG_BUF_SIZE 2048
-
#define IPCP_SOCK_PATH_PREFIX SOCK_PATH "ipcp"
-#define IPCP_MSG_BUF_SIZE IRM_MSG_BUF_SIZE
+
+#define SOCK_BUF_SIZE @SOCK_BUF_SIZE@
/* Returns the full socket path of an IPCP */
char * ipcp_sock_path(pid_t pid);
diff --git a/src/ipcpd/ipcp.c b/src/ipcpd/ipcp.c
index dfb88057..8dc7751a 100644
--- a/src/ipcpd/ipcp.c
+++ b/src/ipcpd/ipcp.c
@@ -55,7 +55,7 @@
struct cmd {
struct list_head next;
- uint8_t cbuf[IPCP_MSG_BUF_SIZE];
+ uint8_t cbuf[SOCK_BUF_SIZE];
size_t len;
int fd;
};
@@ -146,7 +146,7 @@ static void * acceptloop(void * o)
break;
}
- cmd->len = read(csockfd, cmd->cbuf, IPCP_MSG_BUF_SIZE);
+ cmd->len = read(csockfd, cmd->cbuf, SOCK_BUF_SIZE);
if (cmd->len <= 0) {
log_err("Failed to read from socket.");
close(csockfd);
diff --git a/src/irmd/ipcp.c b/src/irmd/ipcp.c
index 49bf13c9..dc8f1c6e 100644
--- a/src/irmd/ipcp.c
+++ b/src/irmd/ipcp.c
@@ -53,7 +53,7 @@ ipcp_msg_t * send_recv_ipcp_msg(pid_t pid,
ipcp_msg_t * msg)
{
int sockfd = 0;
- uint8_t buf[IPCP_MSG_BUF_SIZE];
+ uint8_t buf[SOCK_BUF_SIZE];
char * sock_path = NULL;
ssize_t len;
ipcp_msg_t * recv_msg = NULL;
@@ -116,7 +116,7 @@ ipcp_msg_t * send_recv_ipcp_msg(pid_t pid,
ipcp_msg__pack(msg, buf);
if (write(sockfd, buf, len) != -1)
- len = read(sockfd, buf, IPCP_MSG_BUF_SIZE);
+ len = read(sockfd, buf, SOCK_BUF_SIZE);
if (len > 0)
recv_msg = ipcp_msg__unpack(NULL, len, buf);
diff --git a/src/irmd/main.c b/src/irmd/main.c
index db9d7bbd..b2a521d5 100644
--- a/src/irmd/main.c
+++ b/src/irmd/main.c
@@ -68,7 +68,7 @@
#define IRMD_CLEANUP_TIMER ((IRMD_FLOW_TIMEOUT / 20) * MILLION) /* ns */
#define SHM_SAN_HOLDOFF 1000 /* ms */
#define IPCP_HASH_LEN(e) hash_len(e->dir_hash_algo)
-#define IB_LEN IRM_MSG_BUF_SIZE
+#define IB_LEN SOCK_BUF_SIZE
enum init_state {
IPCP_NULL = 0,
@@ -1862,7 +1862,7 @@ static void * acceptloop(void * o)
break;
}
- cmd->len = read(csockfd, cmd->cbuf, IRM_MSG_BUF_SIZE);
+ cmd->len = read(csockfd, cmd->cbuf, SOCK_BUF_SIZE);
if (cmd->len <= 0) {
log_err("Failed to read from socket.");
close(csockfd);
diff --git a/src/lib/sockets.c b/src/lib/sockets.c
index 6e7d4ad5..b148b7ca 100644
--- a/src/lib/sockets.c
+++ b/src/lib/sockets.c
@@ -33,12 +33,19 @@
#include <stdbool.h>
#include <sys/time.h>
+/* Apple doesn't support SEQPACKET. */
+#ifdef __APPLE__
+#define SOCK_TYPE SOCK_STREAM
+#else
+#define SOCK_TYPE SOCK_SEQPACKET
+#endif
+
int client_socket_open(char * file_name)
{
int sockfd;
struct sockaddr_un serv_addr;
- sockfd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
+ sockfd = socket(AF_UNIX, SOCK_TYPE, 0);
if (sockfd < 0)
return -1;
@@ -66,7 +73,7 @@ int server_socket_open(char * file_name)
return -1;
}
- sockfd = socket(AF_UNIX, SOCK_SEQPACKET, 0);
+ sockfd = socket(AF_UNIX, SOCK_TYPE, 0);
if (sockfd < 0)
return -1;
@@ -96,7 +103,7 @@ static void close_ptr(void * o)
irm_msg_t * send_recv_irm_msg(irm_msg_t * msg)
{
int sockfd;
- uint8_t buf[IRM_MSG_BUF_SIZE];
+ uint8_t buf[SOCK_BUF_SIZE];
ssize_t len;
irm_msg_t * recv_msg = NULL;
@@ -115,7 +122,7 @@ irm_msg_t * send_recv_irm_msg(irm_msg_t * msg)
irm_msg__pack(msg, buf);
if (write(sockfd, buf, len) != -1)
- len = read(sockfd, buf, IRM_MSG_BUF_SIZE);
+ len = read(sockfd, buf, SOCK_BUF_SIZE);
if (len > 0)
recv_msg = irm_msg__unpack(NULL, len, buf);