[alfred] master: alfred: add more debug output for libc errors (c9f5a5d)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/alfred
On branch : master
>---------------------------------------------------------------
commit c9f5a5dece3d8765603a6bbda3e052e6711ea516
Author: Sven Eckelmann <sven(a)narfation.org>
Date: Tue Jul 29 18:06:22 2014 +0200
alfred: add more debug output for libc errors
perror(..) can automatically decode the errno variable and print more
information for an error.
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
Signed-off-by: Simon Wunderlich <sw(a)simonwunderlich.de>
>---------------------------------------------------------------
c9f5a5dece3d8765603a6bbda3e052e6711ea516
gpsd/alfred-gpsd.c | 2 +-
main.c | 2 +-
send.c | 2 +-
vis/vis.c | 4 ++--
4 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/gpsd/alfred-gpsd.c b/gpsd/alfred-gpsd.c
index 6e88dc7..d736ad1 100644
--- a/gpsd/alfred-gpsd.c
+++ b/gpsd/alfred-gpsd.c
@@ -443,7 +443,7 @@ static struct globals *gpsd_init(int argc, char *argv[])
gpsd_source_spec(NULL, &globals->gpsdsource);
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
- fprintf(stderr, "could not register SIGPIPE handler\n");
+ perror("could not register SIGPIPE handler");
return globals;
}
diff --git a/main.c b/main.c
index 0a79e08..1add44e 100644
--- a/main.c
+++ b/main.c
@@ -150,7 +150,7 @@ static struct globals *alfred_init(int argc, char *argv[])
}
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
- fprintf(stderr, "could not register SIGPIPE handler\n");
+ perror("could not register SIGPIPE handler");
return globals;
}
diff --git a/send.c b/send.c
index dc0e428..32b7cbb 100644
--- a/send.c
+++ b/send.c
@@ -170,7 +170,7 @@ ssize_t send_alfred_packet(struct globals *globals, const struct in6_addr *dest,
(struct sockaddr *)&dest_addr,
sizeof(struct sockaddr_in6));
if (ret == -EPERM) {
- fprintf(stderr, "Error during sent\n");
+ perror("Error during sent");
netsock_close(globals->netsock);
globals->netsock = -1;
}
diff --git a/vis/vis.c b/vis/vis.c
index 6cc4034..00372ab 100644
--- a/vis/vis.c
+++ b/vis/vis.c
@@ -258,7 +258,7 @@ static int register_interfaces(struct globals *globals)
path_buff = malloc(PATH_BUFF_LEN);
if (!path_buff) {
- fprintf(stderr, "Error - could not allocate path buffer: out of memory ?\n");
+ perror("Error - could not allocate path buffer");
goto err;
}
@@ -880,7 +880,7 @@ static struct globals *vis_init(int argc, char *argv[])
}
if (signal(SIGPIPE, SIG_IGN) == SIG_ERR)
- fprintf(stderr, "could not register SIGPIPE handler\n");
+ perror("could not register SIGPIPE handler");
return globals;
}
8 years, 6 months
[alfred] master: alfred: Bind alfred to a specific device (e9e98b1)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/alfred
On branch : master
>---------------------------------------------------------------
commit e9e98b1d111ad44dba254a740152c4f76fa23bb5
Author: Sven Eckelmann <sven(a)narfation.org>
Date: Tue Jul 29 14:06:54 2014 +0200
alfred: Bind alfred to a specific device
It is necessary to bind the alfred process to a specific device to allow
multiple instances of it to run at the same time but on different network
interfaces. Just using the scope_id with IPv6 is not enough to bind only on
this specific network device. Also using a specific address+port would not work
because then the master announcements would not be received anymore.
The bind to device only works when the user has root privileges. Therefore,
alfred must now be started as root.
Reported-by: Tobias Hachmer <tobias(a)hachmer.de>
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
Signed-off-by: Simon Wunderlich <sw(a)simonwunderlich.de>
>---------------------------------------------------------------
e9e98b1d111ad44dba254a740152c4f76fa23bb5
netsock.c | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/netsock.c b/netsock.c
index a1a97e4..b59b7b7 100644
--- a/netsock.c
+++ b/netsock.c
@@ -52,7 +52,7 @@ int netsock_open(struct globals *globals)
globals->netsock = -1;
- sock = socket(PF_INET6, SOCK_DGRAM, 0);
+ sock = socket(PF_INET6, SOCK_DGRAM, IPPROTO_UDP);
if (sock < 0) {
perror("can't open socket");
return -1;
@@ -82,6 +82,12 @@ int netsock_open(struct globals *globals)
memcpy(&globals->hwaddr, &ifr.ifr_hwaddr.sa_data, 6);
mac_to_ipv6(&globals->hwaddr, &globals->address);
+ if (setsockopt(sock, SOL_SOCKET, SO_BINDTODEVICE,
+ globals->interface, strlen(globals->interface) + 1)) {
+ perror("can't bind to device");
+ goto err;
+ }
+
if (bind(sock, (struct sockaddr *)&sin6, sizeof(sin6)) < 0) {
perror("can't bind");
goto err;
8 years, 6 months
[alfred] master: alfred: Print libc errors with perror (6f1a3f3)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/alfred
On branch : master
>---------------------------------------------------------------
commit 6f1a3f3cdcccb0006a891323417e325c3674507a
Author: Sven Eckelmann <sven(a)narfation.org>
Date: Tue Jul 29 14:06:53 2014 +0200
alfred: Print libc errors with perror
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
Signed-off-by: Simon Wunderlich <sw(a)simonwunderlich.de>
>---------------------------------------------------------------
6f1a3f3cdcccb0006a891323417e325c3674507a
debugfs.c | 4 +---
gpsd/alfred-gpsd.c | 9 +++------
netsock.c | 12 ++++++------
recv.c | 3 +--
server.c | 11 ++++-------
unix_sock.c | 21 +++++++--------------
vis/vis.c | 10 ++++------
7 files changed, 26 insertions(+), 44 deletions(-)
diff --git a/debugfs.c b/debugfs.c
index 4b8801a..fbf992e 100644
--- a/debugfs.c
+++ b/debugfs.c
@@ -89,9 +89,7 @@ static const char *debugfs_find_mountpoint(void)
/* give up and parse /proc/mounts */
fp = fopen("/proc/mounts", "r");
if (fp == NULL) {
- fprintf(stderr,
- "Error - can't open /proc/mounts for read: %s\n",
- strerror(errno));
+ perror("Error - can't open /proc/mounts for read");
return NULL;
}
diff --git a/gpsd/alfred-gpsd.c b/gpsd/alfred-gpsd.c
index 06c0680..6e88dc7 100644
--- a/gpsd/alfred-gpsd.c
+++ b/gpsd/alfred-gpsd.c
@@ -29,8 +29,7 @@ static int alfred_open_sock(struct globals *globals)
globals->unix_sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if (globals->unix_sock < 0) {
- fprintf(stderr, "can't create unix socket: %s\n",
- strerror(errno));
+ perror("can't create unix socket");
return -1;
}
@@ -41,8 +40,7 @@ static int alfred_open_sock(struct globals *globals)
if (connect(globals->unix_sock, (struct sockaddr *)&addr,
sizeof(addr)) < 0) {
- fprintf(stderr, "can't connect to unix socket: %s\n",
- strerror(errno));
+ perror("can't connect to unix socket");
return -1;
}
@@ -514,8 +512,7 @@ static int gpsd_server(struct globals *globals)
errno = 0;
ret = select(max_fd, &fds, NULL, NULL, &tv);
if (ret == -1 && errno != EINTR)
- printf("select error %s(%d)\n",
- strerror(errno), errno);
+ perror("select error");
if (ret == 1)
gpsd_read_gpsd(globals);
diff --git a/netsock.c b/netsock.c
index 305983f..a1a97e4 100644
--- a/netsock.c
+++ b/netsock.c
@@ -54,7 +54,7 @@ int netsock_open(struct globals *globals)
sock = socket(PF_INET6, SOCK_DGRAM, 0);
if (sock < 0) {
- fprintf(stderr, "can't open socket: %s\n", strerror(errno));
+ perror("can't open socket");
return -1;
}
@@ -62,7 +62,7 @@ int netsock_open(struct globals *globals)
strncpy(ifr.ifr_name, globals->interface, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = '\0';
if (ioctl(sock, SIOCGIFINDEX, &ifr) == -1) {
- fprintf(stderr, "can't get interface: %s\n", strerror(errno));
+ perror("can't get interface");
goto err;
}
@@ -75,7 +75,7 @@ int netsock_open(struct globals *globals)
sin6.sin6_scope_id = ifr.ifr_ifindex;
if (ioctl(sock, SIOCGIFHWADDR, &ifr) == -1) {
- fprintf(stderr, "can't get MAC address: %s\n", strerror(errno));
+ perror("can't get MAC address");
goto err;
}
@@ -83,19 +83,19 @@ int netsock_open(struct globals *globals)
mac_to_ipv6(&globals->hwaddr, &globals->address);
if (bind(sock, (struct sockaddr *)&sin6, sizeof(sin6)) < 0) {
- fprintf(stderr, "can't bind\n");
+ perror("can't bind");
goto err;
}
ret = fcntl(sock, F_GETFL, 0);
if (ret < 0) {
- fprintf(stderr, "failed to get file status flags\n");
+ perror("failed to get file status flags");
goto err;
}
ret = fcntl(sock, F_SETFL, ret | O_NONBLOCK);
if (ret < 0) {
- fprintf(stderr, "failed to set file status flags\n");
+ perror("failed to set file status flags");
goto err;
}
diff --git a/recv.c b/recv.c
index 724c551..2948547 100644
--- a/recv.c
+++ b/recv.c
@@ -385,8 +385,7 @@ int recv_alfred_packet(struct globals *globals)
length = recvfrom(globals->netsock, buf, sizeof(buf), 0,
(struct sockaddr *)&source, &sourcelen);
if (length <= 0) {
- fprintf(stderr, "read from network socket failed: %s\n",
- strerror(errno));
+ perror("read from network socket failed");
return -1;
}
diff --git a/server.c b/server.c
index b060d55..94e6145 100644
--- a/server.c
+++ b/server.c
@@ -236,7 +236,7 @@ static void check_if_socket(struct globals *globals)
sock = socket(PF_INET6, SOCK_DGRAM, 0);
if (sock < 0) {
- fprintf(stderr, "can't open socket: %s\n", strerror(errno));
+ perror("can't open socket");
return;
}
@@ -244,8 +244,7 @@ static void check_if_socket(struct globals *globals)
strncpy(ifr.ifr_name, globals->interface, IFNAMSIZ);
ifr.ifr_name[IFNAMSIZ - 1] = '\0';
if (ioctl(sock, SIOCGIFINDEX, &ifr) == -1) {
- fprintf(stderr, "can't get interface: %s, closing netsock\n",
- strerror(errno));
+ perror("can't get interface, closing netsock");
goto close;
}
@@ -257,8 +256,7 @@ static void check_if_socket(struct globals *globals)
}
if (ioctl(sock, SIOCGIFHWADDR, &ifr) == -1) {
- fprintf(stderr, "can't get MAC address: %s, closing netsock\n",
- strerror(errno));
+ perror("can't get MAC address, closing netsock");
goto close;
}
@@ -330,8 +328,7 @@ int alfred_server(struct globals *globals)
ret = pselect(maxsock + 1, &fds, NULL, &errfds, &tv, NULL);
if (ret == -1) {
- fprintf(stderr, "main loop select failed ...: %s\n",
- strerror(errno));
+ perror("main loop select failed ...");
} else if (ret) {
if (globals->netsock >= 0 &&
FD_ISSET(globals->netsock, &errfds)) {
diff --git a/unix_sock.c b/unix_sock.c
index fb7e391..cc0d25c 100644
--- a/unix_sock.c
+++ b/unix_sock.c
@@ -43,8 +43,7 @@ int unix_sock_open_daemon(struct globals *globals)
globals->unix_sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if (globals->unix_sock < 0) {
- fprintf(stderr, "can't create unix socket: %s\n",
- strerror(errno));
+ perror("can't create unix socket");
return -1;
}
@@ -55,14 +54,12 @@ int unix_sock_open_daemon(struct globals *globals)
if (bind(globals->unix_sock, (struct sockaddr *)&addr,
sizeof(addr)) < 0) {
- fprintf(stderr, "can't bind unix socket: %s\n",
- strerror(errno));
+ perror("can't bind unix socket");
return -1;
}
if (listen(globals->unix_sock, 10) < 0) {
- fprintf(stderr, "can't listen on unix socket: %s\n",
- strerror(errno));
+ perror("can't listen on unix socket");
return -1;
}
@@ -75,8 +72,7 @@ int unix_sock_open_client(struct globals *globals)
globals->unix_sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if (globals->unix_sock < 0) {
- fprintf(stderr, "can't create unix socket: %s\n",
- strerror(errno));
+ perror("can't create unix socket");
return -1;
}
@@ -87,8 +83,7 @@ int unix_sock_open_client(struct globals *globals)
if (connect(globals->unix_sock, (struct sockaddr *)&addr,
sizeof(addr)) < 0) {
- fprintf(stderr, "can't connect to unix socket: %s\n",
- strerror(errno));
+ perror("can't connect to unix socket");
return -1;
}
@@ -315,16 +310,14 @@ int unix_sock_read(struct globals *globals)
client_sock = accept(globals->unix_sock, (struct sockaddr *)&sun_addr,
&sun_size);
if (client_sock < 0) {
- fprintf(stderr, "can't accept unix connection: %s\n",
- strerror(errno));
+ perror("can't accept unix connection");
return -1;
}
/* we assume that we can instantly read here. */
length = read(client_sock, buf, sizeof(buf));
if (length <= 0) {
- fprintf(stderr, "read from unix socket failed: %s\n",
- strerror(errno));
+ perror("read from unix socket failed");
goto err;
}
diff --git a/vis/vis.c b/vis/vis.c
index 0cc4981..6cc4034 100644
--- a/vis/vis.c
+++ b/vis/vis.c
@@ -108,7 +108,7 @@ static int get_if_mac(char *ifname, uint8_t *mac)
ifr.ifr_name[IFNAMSIZ - 1] = '\0';
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
- fprintf(stderr, "can't get interface: %s\n", strerror(errno));
+ perror("can't get interface");
return -1;
}
@@ -117,7 +117,7 @@ static int get_if_mac(char *ifname, uint8_t *mac)
close(sock);
if (ret == -1) {
- fprintf(stderr, "can't get MAC address: %s\n", strerror(errno));
+ perror("can't get MAC address");
return -1;
}
@@ -162,8 +162,7 @@ static int alfred_open_sock(struct globals *globals)
globals->unix_sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if (globals->unix_sock < 0) {
- fprintf(stderr, "can't create unix socket: %s\n",
- strerror(errno));
+ perror("can't create unix socket");
return -1;
}
@@ -174,8 +173,7 @@ static int alfred_open_sock(struct globals *globals)
if (connect(globals->unix_sock, (struct sockaddr *)&addr,
sizeof(addr)) < 0) {
- fprintf(stderr, "can't connect to unix socket: %s\n",
- strerror(errno));
+ perror("can't connect to unix socket");
return -1;
}
8 years, 6 months
[alfred] master: alfred: Make unix socket path configurable (6c6a6f7)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/alfred
On branch : master
>---------------------------------------------------------------
commit 6c6a6f735054a839bd809d5711c29287505ccdd5
Author: Sven Eckelmann <sven(a)narfation.org>
Date: Fri Jul 25 11:51:59 2014 +0200
alfred: Make unix socket path configurable
The path to the socket used for client-server communication is currently
hardcoded in alfred and its complimentary daemons. This makes it hard to run
two instances of alfred on the same machine without any kind of virtualization
or containers.
An user may still want to use two alfred instances to create a test setup or
connect a single machine two separated alfred data clouds without exchanging
data between them.
Reported-by: Tobias Hachmer <tobias(a)hachmer.de>
Signed-off-by: Sven Eckelmann <sven(a)narfation.org>
Acked-by: Andrew Lunn <andrew(a)lunn.ch>
Signed-off-by: Simon Wunderlich <sw(a)simonwunderlich.de>
>---------------------------------------------------------------
6c6a6f735054a839bd809d5711c29287505ccdd5
alfred.h | 7 ++++---
client.c | 6 +++---
gpsd/alfred-gpsd.c | 9 +++++++--
gpsd/alfred-gpsd.h | 3 ++-
gpsd/man/alfred-gpsd.8 | 3 +++
main.c | 8 +++++++-
man/alfred.8 | 3 +++
server.c | 2 +-
unix_sock.c | 10 +++++-----
vis/man/batadv-vis.8 | 3 +++
vis/vis.c | 10 ++++++++--
vis/vis.h | 3 ++-
12 files changed, 48 insertions(+), 19 deletions(-)
diff --git a/alfred.h b/alfred.h
index f0dbb6d..35ac4dd 100644
--- a/alfred.h
+++ b/alfred.h
@@ -35,7 +35,7 @@
#define ALFRED_REQUEST_TIMEOUT 10
#define ALFRED_SERVER_TIMEOUT 60
#define ALFRED_DATA_TIMEOUT 600
-#define ALFRED_SOCK_PATH "/var/run/alfred.sock"
+#define ALFRED_SOCK_PATH_DEFAULT "/var/run/alfred.sock"
#define NO_FILTER -1
enum data_source {
@@ -102,6 +102,7 @@ struct globals {
int netsock;
int unix_sock;
+ const char *unix_path;
struct timespec if_check;
@@ -144,8 +145,8 @@ ssize_t send_alfred_packet(struct globals *globals, const struct in6_addr *dest,
void *buf, int length);
/* unix_sock.c */
int unix_sock_read(struct globals *globals);
-int unix_sock_open_daemon(struct globals *globals, const char *path);
-int unix_sock_open_client(struct globals *globals, const char *path);
+int unix_sock_open_daemon(struct globals *globals);
+int unix_sock_open_client(struct globals *globals);
int unix_sock_close(struct globals *globals);
int unix_sock_req_data_finish(struct globals *globals,
struct transaction_head *head);
diff --git a/client.c b/client.c
index cbc6867..b868719 100644
--- a/client.c
+++ b/client.c
@@ -40,7 +40,7 @@ int alfred_client_request_data(struct globals *globals)
int ret, len, data_len, i;
const size_t buf_data_len = sizeof(buf) - sizeof(*push) - sizeof(*data);
- if (unix_sock_open_client(globals, ALFRED_SOCK_PATH))
+ if (unix_sock_open_client(globals))
return -1;
request = (struct alfred_request_v0 *)buf;
@@ -146,7 +146,7 @@ int alfred_client_set_data(struct globals *globals)
struct alfred_data *data;
int ret, len;
- if (unix_sock_open_client(globals, ALFRED_SOCK_PATH))
+ if (unix_sock_open_client(globals))
return -1;
push = (struct alfred_push_data_v0 *)buf;
@@ -187,7 +187,7 @@ int alfred_client_modeswitch(struct globals *globals)
struct alfred_modeswitch_v0 *modeswitch;
int ret, len;
- if (unix_sock_open_client(globals, ALFRED_SOCK_PATH))
+ if (unix_sock_open_client(globals))
return -1;
modeswitch = (struct alfred_modeswitch_v0 *)buf;
diff --git a/gpsd/alfred-gpsd.c b/gpsd/alfred-gpsd.c
index 87943bd..06c0680 100644
--- a/gpsd/alfred-gpsd.c
+++ b/gpsd/alfred-gpsd.c
@@ -36,7 +36,7 @@ static int alfred_open_sock(struct globals *globals)
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_LOCAL;
- strncpy(addr.sun_path, ALFRED_SOCK_PATH, sizeof(addr.sun_path));
+ strncpy(addr.sun_path, globals->unix_path, sizeof(addr.sun_path));
addr.sun_path[sizeof(addr.sun_path) - 1] = '\0';
if (connect(globals->unix_sock, (struct sockaddr *)&addr,
@@ -399,6 +399,7 @@ static struct globals *gpsd_init(int argc, char *argv[])
{"server", no_argument, NULL, 's'},
{"location", required_argument, NULL, 'l'},
{"gpsd", required_argument, NULL, 'g'},
+ {"unix-path", required_argument, NULL, 'u'},
{"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 'v'},
{NULL, 0, NULL, 0},
@@ -410,8 +411,9 @@ static struct globals *gpsd_init(int argc, char *argv[])
globals->opmode = OPMODE_CLIENT;
globals->source = SOURCE_GPSD;
globals->gpsd_format = FORMAT_JSON;
+ globals->unix_path = ALFRED_SOCK_PATH_DEFAULT;
- while ((opt = getopt_long(argc, argv, "shl:g:v", long_options,
+ while ((opt = getopt_long(argc, argv, "shl:g:vu:", long_options,
&opt_ind)) != -1) {
switch (opt) {
case 's':
@@ -425,6 +427,9 @@ static struct globals *gpsd_init(int argc, char *argv[])
gpsd_source_spec(optarg, &globals->gpsdsource);
have_source = true;
break;
+ case 'u':
+ globals->unix_path = optarg;
+ break;
case 'v':
printf("%s %s\n", argv[0], SOURCE_VERSION);
printf("GPSD alfred client\n");
diff --git a/gpsd/alfred-gpsd.h b/gpsd/alfred-gpsd.h
index 68da875..a8382ea 100644
--- a/gpsd/alfred-gpsd.h
+++ b/gpsd/alfred-gpsd.h
@@ -41,7 +41,7 @@
#define SOURCE_VERSION "2014.4.0"
#endif
-#define ALFRED_SOCK_PATH "/var/run/alfred.sock"
+#define ALFRED_SOCK_PATH_DEFAULT "/var/run/alfred.sock"
#define PATH_BUFF_LEN 200
#define GPSD_PACKETTYPE 2
#define GPSD_PACKETVERSION 1
@@ -95,6 +95,7 @@ struct globals {
float lat, lon, alt;
int unix_sock;
+ const char *unix_path;
struct fixsource_t gpsdsource;
struct gps_data_t gpsdata;
diff --git a/gpsd/man/alfred-gpsd.8 b/gpsd/man/alfred-gpsd.8
index fa5cb1f..3799293 100644
--- a/gpsd/man/alfred-gpsd.8
+++ b/gpsd/man/alfred-gpsd.8
@@ -43,6 +43,9 @@ Print the version
\fB\-h\fP, \fB\-\-help\fP
Display a brief help message.
.TP
+\fB\-u\fP, \fB\-\-unix-path\fP \fIpath\fP
+path to unix socket used for alfred server communication.
+.TP
\fB\-s\fP, \fB\-\-server\fP
Start up in server mode. This server will read the current location
from gpsd and set it in alfred via unix socket. The alfred server must
diff --git a/main.c b/main.c
index d848589..0a79e08 100644
--- a/main.c
+++ b/main.c
@@ -49,6 +49,7 @@ static void alfred_usage(void)
printf(" accepts data from slaves and synces it with\n");
printf(" other masters\n");
printf("\n");
+ printf(" -u, --unix-path [path] path to unix socket used for client-server communication (default: \""ALFRED_SOCK_PATH_DEFAULT"\")\n");
printf(" -v, --version print the version\n");
printf(" -h, --help this help\n");
printf("\n");
@@ -66,6 +67,7 @@ static struct globals *alfred_init(int argc, char *argv[])
{"help", no_argument, NULL, 'h'},
{"req-version", required_argument, NULL, 'V'},
{"modeswitch", required_argument, NULL, 'M'},
+ {"unix-path", required_argument, NULL, 'u'},
{"version", no_argument, NULL, 'v'},
{NULL, 0, NULL, 0},
};
@@ -79,10 +81,11 @@ static struct globals *alfred_init(int argc, char *argv[])
globals->best_server = NULL;
globals->clientmode_version = 0;
globals->mesh_iface = "bat0";
+ globals->unix_path = ALFRED_SOCK_PATH_DEFAULT;
time_random_seed();
- while ((opt = getopt_long(argc, argv, "ms:r:hi:b:vV:M:", long_options,
+ while ((opt = getopt_long(argc, argv, "ms:r:hi:b:vV:M:u:", long_options,
&opt_ind)) != -1) {
switch (opt) {
case 'r':
@@ -132,6 +135,9 @@ static struct globals *alfred_init(int argc, char *argv[])
}
globals->clientmode = CLIENT_MODESWITCH;
break;
+ case 'u':
+ globals->unix_path = optarg;
+ break;
case 'v':
printf("%s %s\n", argv[0], SOURCE_VERSION);
printf("A.L.F.R.E.D. - Almighty Lightweight Remote Fact Exchange Daemon\n");
diff --git a/man/alfred.8 b/man/alfred.8
index e77acc3..c90caa8 100644
--- a/man/alfred.8
+++ b/man/alfred.8
@@ -50,6 +50,9 @@ Print the version
.TP
\fB\-h\fP, \fB\-\-help\fP
Display a brief help message.
+.TP
+\fB\-u\fP, \fB\-\-unix-path\fP \fIpath\fP
+path to unix socket used for client-server communication.
.
.SH CLIENT OPTIONS
.TP
diff --git a/server.c b/server.c
index e4465dc..b060d55 100644
--- a/server.c
+++ b/server.c
@@ -285,7 +285,7 @@ int alfred_server(struct globals *globals)
if (create_hashes(globals))
return -1;
- if (unix_sock_open_daemon(globals, ALFRED_SOCK_PATH))
+ if (unix_sock_open_daemon(globals))
return -1;
if (!globals->interface) {
diff --git a/unix_sock.c b/unix_sock.c
index 3915553..fb7e391 100644
--- a/unix_sock.c
+++ b/unix_sock.c
@@ -35,11 +35,11 @@
#include "hash.h"
#include "packet.h"
-int unix_sock_open_daemon(struct globals *globals, const char *path)
+int unix_sock_open_daemon(struct globals *globals)
{
struct sockaddr_un addr;
- unlink(path);
+ unlink(globals->unix_path);
globals->unix_sock = socket(AF_LOCAL, SOCK_STREAM, 0);
if (globals->unix_sock < 0) {
@@ -50,7 +50,7 @@ int unix_sock_open_daemon(struct globals *globals, const char *path)
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_LOCAL;
- strncpy(addr.sun_path, path, sizeof(addr.sun_path));
+ strncpy(addr.sun_path, globals->unix_path, sizeof(addr.sun_path));
addr.sun_path[sizeof(addr.sun_path) - 1] = '\0';
if (bind(globals->unix_sock, (struct sockaddr *)&addr,
@@ -69,7 +69,7 @@ int unix_sock_open_daemon(struct globals *globals, const char *path)
return 0;
}
-int unix_sock_open_client(struct globals *globals, const char *path)
+int unix_sock_open_client(struct globals *globals)
{
struct sockaddr_un addr;
@@ -82,7 +82,7 @@ int unix_sock_open_client(struct globals *globals, const char *path)
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_LOCAL;
- strncpy(addr.sun_path, path, sizeof(addr.sun_path));
+ strncpy(addr.sun_path, globals->unix_path, sizeof(addr.sun_path));
addr.sun_path[sizeof(addr.sun_path) - 1] = '\0';
if (connect(globals->unix_sock, (struct sockaddr *)&addr,
diff --git a/vis/man/batadv-vis.8 b/vis/man/batadv-vis.8
index 9b7c05c..20dead7 100644
--- a/vis/man/batadv-vis.8
+++ b/vis/man/batadv-vis.8
@@ -42,6 +42,9 @@ Print the version
\fB\-h\fP, \fB\-\-help\fP
Display a brief help message.
.TP
+\fB\-u\fP, \fB\-\-unix-path\fP \fIpath\fP
+path to unix socket used for alfred server communication.
+.TP
\fB\-i\fP, \fB\-\-interface\fP \fIiface\fP
Specify the batman-adv interface configured on the system (default: bat0)
.TP
diff --git a/vis/vis.c b/vis/vis.c
index 55c2dad..0cc4981 100644
--- a/vis/vis.c
+++ b/vis/vis.c
@@ -169,7 +169,7 @@ static int alfred_open_sock(struct globals *globals)
memset(&addr, 0, sizeof(addr));
addr.sun_family = AF_LOCAL;
- strncpy(addr.sun_path, ALFRED_SOCK_PATH, sizeof(addr.sun_path));
+ strncpy(addr.sun_path, globals->unix_path, sizeof(addr.sun_path));
addr.sun_path[sizeof(addr.sun_path) - 1] = '\0';
if (connect(globals->unix_sock, (struct sockaddr *)&addr,
@@ -818,6 +818,7 @@ static void vis_usage(void)
printf(" -i, --interface specify the batman-adv interface configured on the system (default: bat0)\n");
printf(" -s, --server start up in server mode, which regularly updates vis data from batman-adv\n");
printf(" -f, --format <format> specify the output format for client mode (either \"json\", \"jsondoc\" or \"dot\")\n");
+ printf(" -u, --unix-path <path> path to unix socket used for alfred server communication (default: \""ALFRED_SOCK_PATH_DEFAULT"\")\n");
printf(" -v, --version print the version\n");
printf(" -h, --help this help\n");
printf("\n");
@@ -831,6 +832,7 @@ static struct globals *vis_init(int argc, char *argv[])
{"server", no_argument, NULL, 's'},
{"interface", required_argument, NULL, 'i'},
{"format", required_argument, NULL, 'f'},
+ {"unix-path", required_argument, NULL, 'u'},
{"help", no_argument, NULL, 'h'},
{"version", no_argument, NULL, 'v'},
{NULL, 0, NULL, 0},
@@ -842,8 +844,9 @@ static struct globals *vis_init(int argc, char *argv[])
globals->opmode = OPMODE_CLIENT;
globals->interface = "bat0";
globals->vis_format = FORMAT_DOT;
+ globals->unix_path = ALFRED_SOCK_PATH_DEFAULT;
- while ((opt = getopt_long(argc, argv, "shf:i:v", long_options,
+ while ((opt = getopt_long(argc, argv, "shf:i:vu:", long_options,
&opt_ind)) != -1) {
switch (opt) {
case 's':
@@ -864,6 +867,9 @@ static struct globals *vis_init(int argc, char *argv[])
case 'i':
globals->interface = strdup(optarg);
break;
+ case 'u':
+ globals->unix_path = optarg;
+ break;
case 'v':
printf("%s %s\n", argv[0], SOURCE_VERSION);
printf("VIS alfred client\n");
diff --git a/vis/vis.h b/vis/vis.h
index 3f71970..468bfc4 100644
--- a/vis/vis.h
+++ b/vis/vis.h
@@ -30,7 +30,7 @@
#define SOURCE_VERSION "2014.4.0"
#endif
-#define ALFRED_SOCK_PATH "/var/run/alfred.sock"
+#define ALFRED_SOCK_PATH_DEFAULT "/var/run/alfred.sock"
#define PATH_BUFF_LEN 200
#define VIS_PACKETTYPE 1
#define VIS_PACKETVERSION 1
@@ -105,6 +105,7 @@ struct globals {
struct list_head entry_list;
int unix_sock;
+ const char *unix_path;
};
8 years, 6 months
[linux-merge]linux integration; annotated tag, v3.16-rc7, created. v3.16-rc7
by postmaster@open-mesh.org
The annotated tag, v3.16-rc7 has been created
at 895deb688afba7cec559697f632e97337c152f06 (tag)
tagging 64aa90f26c06e1cb2aacfb98a7d0eccfbd6c1a91 (commit)
replaces v3.16-rc6
tagged by Linus Torvalds
on Sun Jul 27 12:42:05 2014 -0700
- Shortlog ------------------------------------------------------------
Linux 3.16-rc7
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQEcBAABAgAGBQJT1VYNAAoJEHm+PkMAQRiGQJwIAKSYp1Uqz5O/e5r0V1TlZKT4
1B4Njopl57PwSrJQWcGEuH2yHyM896vfPO4L6BJIOfyWzh8kwpQqclDt6uhXoF/v
OsO1zb/7/j+n/pDZsePqP9AyIgErsHEBgUbhecDqzjN++ITPcZjQ6TIMPglZaumN
jFAdAZuAaEwqAk8jqN2wlm689Fh9MuUEarHXbXLCqu5RgLrWhFGhp/cTWY62aqnZ
XfEeQ9KtpRZmlR/IYjerbb1eRH7ZdJsZ88WngLX9dj/JdNxHWBkWQBXGAusXk5Fk
y6LsIV3TjyBdrRKJ1Ifyg/2EIXHNBs8HxTFGXpjtp2HPuMLDxZOWOWikb9URtNg=
=Fjf4
-----END PGP SIGNATURE-----
Antonio Quartulli (1):
batman-adv: fix TT VLAN inconsistency on VLAN re-add
Simon Wunderlich (1):
batman-adv: drop QinQ claim frames in bridge loop avoidance
-----------------------------------------------------------------------
--
linux integration
8 years, 6 months
[openwrt-feed-alfred] master: alfred: bump version to 2014.3.0 (4b2de52)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/openwrt-feed-alfred
On branch : master
>---------------------------------------------------------------
commit 4b2de5279304b7904d4effe5963cfbd172d5a4a9
Author: Simon Wunderlich <sw(a)simonwunderlich.de>
Date: Thu Jul 24 12:52:07 2014 +0200
alfred: bump version to 2014.3.0
bump alfred to version 2014.3.0. From the CHANGELOG:
* fix various possible memleak, access errors and strncpy issues
* handle fcntl return codes
* fix altitude verification check in gpsd
Signed-off-by: Simon Wunderlich <sw(a)simonwunderlich.de>
>---------------------------------------------------------------
4b2de5279304b7904d4effe5963cfbd172d5a4a9
alfred/Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/alfred/Makefile b/alfred/Makefile
index c54cc8a..40b39ad 100644
--- a/alfred/Makefile
+++ b/alfred/Makefile
@@ -11,9 +11,9 @@ include $(TOPDIR)/rules.mk
# The latest alfred git hash in PKG_REV can be obtained from http://git.open-mesh.org/alfred.git
#
PKG_NAME:=alfred
-PKG_VERSION:=2014.1.0
-PKG_RELEASE:=1
-PKG_REV:=839cfd5b37b31575e8b64bb93c7f8d7fc3049aa2
+PKG_VERSION:=2014.3.0
+PKG_RELEASE:=0
+PKG_REV:=5bfda266e711dab9d634e529a664561a4760d5eb
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.gz
PKG_SOURCE_URL:=git://git.open-mesh.org/alfred.git
8 years, 6 months
[openwrt-feed-alfred] master: alfred: bump version to 2014.2.0 (fe597a3)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/openwrt-feed-alfred
On branch : master
>---------------------------------------------------------------
commit fe597a3e78e49c356ad698e7ca5a3c71253a21bd
Author: Simon Wunderlich <sw(a)simonwunderlich.de>
Date: Thu Jul 24 12:52:07 2014 +0200
alfred: bump version to 2014.2.0
bump alfred to version 2014.2.0. From the CHANGELOG:
* fix various possible memleak, access errors and strncpy issues
* handle fcntl return codes
* fix altitude verification check in gpsd
Signed-off-by: Simon Wunderlich <sw(a)simonwunderlich.de>
>---------------------------------------------------------------
fe597a3e78e49c356ad698e7ca5a3c71253a21bd
alfred/Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/alfred/Makefile b/alfred/Makefile
index c54cc8a..500d2be 100644
--- a/alfred/Makefile
+++ b/alfred/Makefile
@@ -11,9 +11,9 @@ include $(TOPDIR)/rules.mk
# The latest alfred git hash in PKG_REV can be obtained from http://git.open-mesh.org/alfred.git
#
PKG_NAME:=alfred
-PKG_VERSION:=2014.1.0
-PKG_RELEASE:=1
-PKG_REV:=839cfd5b37b31575e8b64bb93c7f8d7fc3049aa2
+PKG_VERSION:=2014.2.0
+PKG_RELEASE:=0
+PKG_REV:=5bfda266e711dab9d634e529a664561a4760d5eb
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_RELEASE).tar.gz
PKG_SOURCE_URL:=git://git.open-mesh.org/alfred.git
8 years, 6 months
[batman-adv] next's head updated: Merge remote-tracking branch 'origin/next' (2264f8a)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/batman-adv
Branch 'next' now includes:
d979cae batman-adv: prefer kmalloc_array to kmalloc when possible
4c525d3 batman-adv: Fix out-of-order fragmentation support
11b7925 batman-adv: remove unnecessary logspam
c38939d batman-adv: add compat code for kmalloc_array()
8c12d63 batman-adv: add __pskb_copy_fclone and pskb_copy_for_clone
7de3b43 Merge branch 'next'
7644650 batman-adv: increase default hop penalty
6ae4281 Merge branch 'next'
2264f8a Merge remote-tracking branch 'origin/next'
8 years, 6 months
[batman-adv] master: Merge remote-tracking branch 'origin/next' (2264f8a)
by postmaster@open-mesh.org
Repository : ssh://git@open-mesh.org/batman-adv
On branch : master
>---------------------------------------------------------------
commit 2264f8ad0c64bcf74167e58d7e97378f2f18d824
Merge: 6ae4281 0c1c04b
Author: Simon Wunderlich <sw(a)simonwunderlich.de>
Date: Tue Jul 22 15:46:25 2014 +0200
Merge remote-tracking branch 'origin/next'
>---------------------------------------------------------------
2264f8ad0c64bcf74167e58d7e97378f2f18d824
CHANGELOG | 12 ++++++++++++
README.external | 2 +-
main.h | 2 +-
3 files changed, 14 insertions(+), 2 deletions(-)
8 years, 6 months