projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'maint' into next
[paraslash.git]
/
acl.c
diff --git
a/acl.c
b/acl.c
index 9bc83c2506f9083e577d8ff36d0c6953dd2d1285..087ea0c805c102bace697596061978b64aa22f72 100644
(file)
--- a/
acl.c
+++ b/
acl.c
@@
-6,6
+6,8
@@
/** \file acl.c Access control lists for paraslash senders. */
/** \file acl.c Access control lists for paraslash senders. */
+#include <regex.h>
+
#include "para.h"
#include "error.h"
#include "string.h"
#include "para.h"
#include "error.h"
#include "string.h"
@@
-90,13
+92,17
@@
static void acl_add_entry(struct list_head *acl, char *addr, int netmask)
* \param addr The address to delete.
* \param netmask The netmask of the entry to be removed from the list.
*/
* \param addr The address to delete.
* \param netmask The netmask of the entry to be removed from the list.
*/
-static void acl_del_entry(struct list_head *acl, char *addr,
int
netmask)
+static void acl_del_entry(struct list_head *acl, char *addr,
unsigned
netmask)
{
struct access_info *ai, *tmp;
{
struct access_info *ai, *tmp;
+ struct in_addr to_delete;
+
+ inet_pton(AF_INET, addr, &to_delete);
list_for_each_entry_safe(ai, tmp, acl, node) {
list_for_each_entry_safe(ai, tmp, acl, node) {
- if (!strcmp(addr, inet_ntoa(ai->addr)) &&
- ai->netmask == netmask) {
+
+ if (v4_addr_match(to_delete.s_addr, ai->addr.s_addr,
+ PARA_MIN(netmask, ai->netmask))) {
PARA_NOTICE_LOG("removing %s/%i from access list\n",
addr, ai->netmask);
list_del(&ai->node);
PARA_NOTICE_LOG("removing %s/%i from access list\n",
addr, ai->netmask);
list_del(&ai->node);