diff options
author | Gilles Chehade <gilles@poolp.org> | 2012-11-15 20:30:22 +0100 |
---|---|---|
committer | Gilles Chehade <gilles@poolp.org> | 2012-11-15 20:30:22 +0100 |
commit | 9b31b68eac9b573428f11bd93fc3604e5ee97907 (patch) | |
tree | 57943bdcf4d0b3fdb8842d5d6c4aa6c6d87bb5b4 /smtpd/ruleset.c | |
parent | remove deprecated API (diff) | |
parent | finish KNF (diff) | |
download | OpenSMTPD-9b31b68eac9b573428f11bd93fc3604e5ee97907.tar.xz OpenSMTPD-9b31b68eac9b573428f11bd93fc3604e5ee97907.zip |
Merge branch 'cleanup'
Conflicts:
smtpd/lka.c
smtpd/smtpd.h
smtpd/table_db.c
smtpd/table_static.c
Diffstat (limited to 'smtpd/ruleset.c')
-rw-r--r-- | smtpd/ruleset.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/smtpd/ruleset.c b/smtpd/ruleset.c index 5fcd53ef..dcc135aa 100644 --- a/smtpd/ruleset.c +++ b/smtpd/ruleset.c @@ -34,7 +34,8 @@ #include "log.h" -static int ruleset_check_source(struct table *, const struct sockaddr_storage *); +static int ruleset_check_source(struct table *, + const struct sockaddr_storage *); static int ruleset_match_mask(struct sockaddr_storage *, struct netaddr *); static int ruleset_inet4_match(struct sockaddr_in *, struct netaddr *); static int ruleset_inet6_match(struct sockaddr_in6 *, struct netaddr *); @@ -77,8 +78,10 @@ ruleset_match(const struct envelope *evp) fatal("failed to lookup table."); if (! strcmp(table->t_src, "static")) { - TAILQ_FOREACH(me, &table->t_contents, me_entry) { - if (hostname_match(maddr->domain, me->me_key)) + TAILQ_FOREACH(me, &table->t_contents, + me_entry) { + if (hostname_match(maddr->domain, + me->me_key)) return r; } } @@ -186,10 +189,10 @@ ruleset_inet4_match(struct sockaddr_in *ss, struct netaddr *ssmask) mask = htonl(mask); /* (addr & mask) == (net & mask) */ - if ((ss->sin_addr.s_addr & mask) == + if ((ss->sin_addr.s_addr & mask) == (((struct sockaddr_in *)ssmask)->sin_addr.s_addr & mask)) return 1; - + return 0; } @@ -200,17 +203,17 @@ ruleset_inet6_match(struct sockaddr_in6 *ss, struct netaddr *ssmask) struct in6_addr *inmask; struct in6_addr mask; int i; - + bzero(&mask, sizeof(mask)); for (i = 0; i < ssmask->bits / 8; i++) mask.s6_addr[i] = 0xff; i = ssmask->bits % 8; if (i) mask.s6_addr[ssmask->bits / 8] = 0xff00 >> i; - + in = &ss->sin6_addr; inmask = &((struct sockaddr_in6 *)&ssmask->ss)->sin6_addr; - + for (i = 0; i < 16; i++) { if ((in->s6_addr[i] & mask.s6_addr[i]) != (inmask->s6_addr[i] & mask.s6_addr[i])) |