#include "config.h"
#include "filter.h"
#include "http.h"
+#include "task.h"
#define RSPAMD_BASE_ERROR 500
#define RSPAMD_FILTER_ERROR RSPAMD_BASE_ERROR + 1
#define RSPAMD_LENGTH_ERROR RSPAMD_BASE_ERROR + 4
#define RSPAMD_STATFILE_ERROR RSPAMD_BASE_ERROR + 5
-struct rspamd_task;
struct metric;
/**
}
gboolean
-rspamd_ip_is_valid (void *ptr, int af)
+rspamd_ip_is_valid (rspamd_inet_addr_t *addr)
{
const struct in_addr ip4_any = { INADDR_ANY }, ip4_none = { INADDR_NONE };
const struct in6_addr ip6_any = IN6ADDR_ANY_INIT;
gboolean ret = FALSE;
- if (G_LIKELY (af == AF_INET)) {
- if (memcmp (ptr, &ip4_any, sizeof (struct in_addr)) != 0 &&
- memcmp (ptr, &ip4_none, sizeof (struct in_addr)) != 0) {
+ if (G_LIKELY (addr->af == AF_INET)) {
+ if (memcmp (&addr->addr.s4.sin_addr, &ip4_any, sizeof (struct in_addr)) != 0 &&
+ memcmp (&addr->addr.s4.sin_addr, &ip4_none,
+ sizeof (struct in_addr)) != 0) {
ret = TRUE;
}
}
- else if (G_UNLIKELY (af == AF_INET6)) {
- if (memcmp (ptr, &ip6_any, sizeof (struct in6_addr)) != 0) {
+ else if (G_UNLIKELY (addr->af == AF_INET6)) {
+ if (memcmp (&addr->addr.s6.sin6_addr, &ip6_any,
+ sizeof (struct in6_addr)) != 0) {
ret = TRUE;
}
}
{
switch (addr->af) {
case AF_INET:
- return addr->addr.s4.sin_port;
+ return ntohs (addr->addr.s4.sin_port);
case AF_INET6:
- return addr->addr.s6.sin6_port;
+ return ntohs (addr->addr.s6.sin6_port);
}
return 0;
* @param af address family (AF_INET or AF_INET6)
* @return TRUE if the address is valid
*/
-gboolean rspamd_ip_is_valid (void *ptr, int af);
+gboolean rspamd_ip_is_valid (rspamd_inet_addr_t *addr);
/**
* Emit UCL object to gstring