summaryrefslogtreecommitdiff
path: root/src/gsmd/usock.c
diff options
context:
space:
mode:
authorHarald Welte <laforge@gnumonks.org>2013-09-27 22:42:41 +0200
committerHarald Welte <laforge@gnumonks.org>2013-09-29 14:56:44 +0200
commita72236a1d0effb1fe985f5685d40e6dc33ab65a3 (patch)
treeb4ab5e143ff7631ee53f8691ce4a713f33c3f587 /src/gsmd/usock.c
parent292e73a08c3445b4aa96057e559dbcec44b0d8f7 (diff)
permit gsmd and libgsm to handle multiple instances
By using differntly-named unix domain sockets, we can run multiple gsmd instances in parallel.
Diffstat (limited to 'src/gsmd/usock.c')
-rw-r--r--src/gsmd/usock.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/gsmd/usock.c b/src/gsmd/usock.c
index f258fd6..41814c8 100644
--- a/src/gsmd/usock.c
+++ b/src/gsmd/usock.c
@@ -1734,7 +1734,14 @@ int usock_init(struct gsmd *g)
memset(&sun, 0, sizeof(sun));
sun.sun_family = AF_UNIX;
- memcpy(sun.sun_path, GSMD_UNIX_SOCKET, sizeof(GSMD_UNIX_SOCKET));
+ if (g->instance == 0) {
+ memcpy(sun.sun_path, GSMD_UNIX_SOCKET,
+ sizeof(GSMD_UNIX_SOCKET));
+ } else {
+ sun.sun_path[0] = '\0';
+ snprintf(sun.sun_path+1, sizeof(sun.sun_path)-1, "gsmd.%u",
+ g->instance);
+ }
rc = bind(fd, (struct sockaddr *)&sun, sizeof(sun));
if (rc < 0) {
personal git repositories of Harald Welte. Your mileage may vary