X-Git-Url: http://git.madism.org/?a=blobdiff_plain;f=postlicyd%2Fiplist.c;h=0fb6934a738df3b0ff50353b402f76d1700a936c;hb=8ca147e634f83b185dd4cddebde78878a69f315f;hp=b37d64bddcd0d509838b31f3b2b5bd5f3a9094a1;hpb=56eeb7d73ed0c82f2a8165b6aba525af73c58f73;p=apps%2Fpfixtools.git diff --git a/postlicyd/iplist.c b/postlicyd/iplist.c index b37d64b..0fb6934 100644 --- a/postlicyd/iplist.c +++ b/postlicyd/iplist.c @@ -16,17 +16,20 @@ /* products derived from this software without specific prior written */ /* permission. */ /* */ -/* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND */ -/* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE */ -/* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */ -/* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS */ -/* BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR */ -/* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF */ -/* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS */ -/* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN */ -/* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) */ -/* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF */ -/* THE POSSIBILITY OF SUCH DAMAGE. */ +/* THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS */ +/* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED */ +/* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */ +/* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY */ +/* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL */ +/* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS */ +/* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) */ +/* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, */ +/* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN */ +/* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */ +/* POSSIBILITY OF SUCH DAMAGE. */ +/* */ +/* Copyright (c) 2006-2008 the Authors */ +/* see AUTHORS and source files for details */ /******************************************************************************/ /* @@ -140,6 +143,7 @@ rbldb_t *rbldb_create(const char *file, bool lock) file_map_t map; const char *p, *end; uint32_t ips = 0; + time_t now = time(0); if (!file_map_open(&map, file, false)) { return NULL; @@ -147,7 +151,6 @@ rbldb_t *rbldb_create(const char *file, bool lock) rbldb_resource_t *res = resource_get("iplist", file); if (res == NULL) { - debug("No resource found"); res = p_new(rbldb_resource_t, 1); resource_set("iplist", file, res, (resource_destructor_t)rbldb_resource_wipe); } @@ -156,11 +159,10 @@ rbldb_t *rbldb_create(const char *file, bool lock) db->filename = m_strdup(file); db->ips = res->ips; if (map.st.st_size == res->size && map.st.st_mtime == res->mtime) { - info("rbl %s up to date", file); + info("%s loaded: already up-to-date", file); file_map_close(&map); return db; } - debug("mtime %d/%d, size %d/%d", (int)map.st.st_mtime, (int)res->mtime, (int)map.st.st_size, (int)res->size); res->size = map.st.st_size; res->mtime = map.st.st_mtime; @@ -170,8 +172,7 @@ rbldb_t *rbldb_create(const char *file, bool lock) --end; } if (end != map.end) { - warn("file %s miss a final \\n, ignoring last line", - file); + warn("%s: final \\n missing, ignoring last line", file); } while (p < end) { @@ -205,7 +206,7 @@ rbldb_t *rbldb_create(const char *file, bool lock) } } - info("rbl %s loaded, %d IPs", file, ips); + info("%s loaded: done in %us, %u IPs", file, (uint32_t)(time(0) - now), ips); return db; } @@ -489,13 +490,13 @@ static filter_result_t iplist_filter(const filter_t *filter, const query_t *quer const iplist_filter_t *data = filter->data; bool error = true; - if (parse_ipv4(query->client_address, &end, &ip) != 0) { - if (strchr(query->client_address, ':')) { + if (parse_ipv4(query->client_address.str, &end, &ip) != 0) { + if (strchr(query->client_address.str, ':')) { /* iplist only works on IPv4 */ return HTK_FAIL; } warn("invalid client address: %s, expected ipv4", - query->client_address); + query->client_address.str); return HTK_ERROR; } for (uint32_t i = 0 ; i < data->rbls.len ; ++i) {