summaryrefslogtreecommitdiff
path: root/mu/acl.c
diff options
context:
space:
mode:
Diffstat (limited to 'mu/acl.c')
-rw-r--r--mu/acl.c40
1 files changed, 11 insertions, 29 deletions
diff --git a/mu/acl.c b/mu/acl.c
index 9e9fd8b88..4f796c582 100644
--- a/mu/acl.c
+++ b/mu/acl.c
@@ -41,36 +41,10 @@ static struct argp_option acl_options[] = {
41}; 41};
42 42
43static char *input_file_name; 43static char *input_file_name;
44static struct sockaddr *target_sa; 44static struct mu_sockaddr *target_sa;
45static socklen_t target_salen;
46static mu_acl_t acl; 45static mu_acl_t acl;
47static const char *path = "acl"; 46static const char *path = "acl";
48 47
49static struct sockaddr *
50parse_address (socklen_t *psalen, const char *str)
51{
52 struct sockaddr_in in;
53 struct sockaddr *sa;
54
55 in.sin_family = AF_INET;
56 if (inet_aton (str, &in.sin_addr) == 0)
57 {
58 mu_error ("Invalid IPv4: %s", str);
59 exit (1);
60 }
61 in.sin_port = 0;
62 *psalen = sizeof (in);
63 sa = malloc (*psalen);
64 if (!sa)
65 {
66 mu_error ("%s", mu_strerror (errno));
67 exit (1);
68 }
69
70 memcpy (sa, &in, sizeof (in));
71 return sa;
72}
73
74static error_t 48static error_t
75acl_parse_opt (int key, char *arg, struct argp_state *state) 49acl_parse_opt (int key, char *arg, struct argp_state *state)
76{ 50{
@@ -160,9 +134,17 @@ mutool_acl (int argc, char **argv)
160 { 134 {
161 const char *ap = *argv++; 135 const char *ap = *argv++;
162 136
163 target_sa = parse_address (&target_salen, ap); 137 rc = mu_sockaddr_from_node (&target_sa, ap, NULL, NULL);
138 if (rc)
139 {
140 mu_error ("mu_sockaddr_from_node: %s", mu_strerror (rc));
141 exit (1);
142 }
143
164 mu_printf ("Testing %s:\n", ap); 144 mu_printf ("Testing %s:\n", ap);
165 rc = mu_acl_check_sockaddr (acl, target_sa, target_salen, &result); 145 rc = mu_acl_check_sockaddr (acl, target_sa->addr, target_sa->addrlen,
146 &result);
147 mu_sockaddr_free_list (target_sa);
166 if (rc) 148 if (rc)
167 { 149 {
168 mu_error ("mu_acl_check_sockaddr failed: %s", mu_strerror (rc)); 150 mu_error ("mu_acl_check_sockaddr failed: %s", mu_strerror (rc));

Return to:

Send suggestions and report system problems to the System administrator.