sd_event_source *server_event_source, *client_event_source;
} Connection;
-union sockaddr_any {
- struct sockaddr sa;
- struct sockaddr_un un;
- struct sockaddr_in in;
- struct sockaddr_in6 in6;
- struct sockaddr_storage storage;
-};
-
static const char *arg_remote_host = NULL;
static void connection_free(Connection *c) {
set_free(context->connections);
}
-static int get_remote_sockaddr(union sockaddr_any *sa, socklen_t *salen) {
+static int get_remote_sockaddr(union sockaddr_union *sa, socklen_t *salen) {
int r;
assert(sa);
strncpy(sa->un.sun_path, arg_remote_host, sizeof(sa->un.sun_path)-1);
sa->un.sun_path[sizeof(sa->un.sun_path)-1] = 0;
- *salen = offsetof(union sockaddr_any, un.sun_path) + strlen(sa->un.sun_path);
+ *salen = offsetof(union sockaddr_union, un.sun_path) + strlen(sa->un.sun_path);
} else if (arg_remote_host[0] == '@') {
sa->un.sun_family = AF_UNIX;
strncpy(sa->un.sun_path+1, arg_remote_host+1, sizeof(sa->un.sun_path)-2);
sa->un.sun_path[sizeof(sa->un.sun_path)-1] = 0;
- *salen = offsetof(union sockaddr_any, un.sun_path) + 1 + strlen(sa->un.sun_path + 1);
+ *salen = offsetof(union sockaddr_union, un.sun_path) + 1 + strlen(sa->un.sun_path + 1);
} else {
_cleanup_freeaddrinfo_ struct addrinfo *result = NULL;
}
assert(result);
- if (result->ai_addrlen > sizeof(union sockaddr_any)) {
+ if (result->ai_addrlen > sizeof(union sockaddr_union)) {
log_error("Address too long.");
return -E2BIG;
}
}
static int add_connection_socket(Context *context, sd_event *event, int fd) {
- union sockaddr_any sa = {};
+ union sockaddr_union sa = {};
socklen_t salen;
Connection *c;
int r;