/*
- * Copyright (C) 2005-2014 Andre Noll <maan@tuebingen.mpg.de>
+ * Copyright (C) 2005 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include <arpa/inet.h>
#include <sys/un.h>
#include <netdb.h>
+#include <lopsub.h>
#include "para.h"
#include "error.h"
* Initialize a struct sender status.
*
* \param ss The struct to initialize.
- * \param access_arg The array of access arguments given at the command line.
- * \param num_access_args The number of elements in \a access_arg.
+ * \param acl_opt_result Contains array of --{http|dccp}-access arguments.
* \param port The tcp or dccp port to listen on.
* \param max_clients The maximal number of simultaneous connections.
* \param default_deny Whether a blacklist should be used for access control.
*/
-void init_sender_status(struct sender_status *ss, char **access_arg,
- int num_access_args, int port, int max_clients, int default_deny)
+void init_sender_status(struct sender_status *ss,
+ const struct lls_opt_result *acl_opt_result, int port,
+ int max_clients, int default_deny)
{
+ int i;
+
ss->listen_fd = -1;
INIT_LIST_HEAD(&ss->client_list);
ss->port = port;
- acl_init(&ss->acl, access_arg, num_access_args);
+
+ /* Initialize an access control list */
+ INIT_LIST_HEAD(&ss->acl);
+ for (i = 0; i < lls_opt_given(acl_opt_result); i++) {
+ const char *arg = lls_string_val(i, acl_opt_result);
+ char addr[16];
+ int mask;
+ if (!parse_cidr(arg, addr, sizeof(addr), &mask))
+ PARA_WARNING_LOG("ACL syntax error: %s, ignoring\n",
+ arg);
+ else
+ acl_add_entry(&ss->acl, addr, mask);
+ }
ss->num_clients = 0;
ss->max_clients = max_clients;
ss->default_deny = default_deny;