|
|
@@ -165,6 +165,13 @@ LUA_FUNCTION_DEF (ip, get_port); |
|
|
|
*/ |
|
|
|
LUA_FUNCTION_DEF (ip, is_local); |
|
|
|
|
|
|
|
/*** |
|
|
|
* @method ip:less_than(other) |
|
|
|
* Returns true if address is less than other |
|
|
|
* @return {boolean} |
|
|
|
*/ |
|
|
|
LUA_FUNCTION_DEF (ip, less_than); |
|
|
|
|
|
|
|
static const struct luaL_reg iplib_m[] = { |
|
|
|
LUA_INTERFACE_DEF (ip, to_string), |
|
|
|
LUA_INTERFACE_DEF (ip, to_table), |
|
|
@@ -183,6 +190,7 @@ static const struct luaL_reg iplib_m[] = { |
|
|
|
{"__tostring", lua_ip_to_string}, |
|
|
|
{"__eq", lua_ip_equal}, |
|
|
|
{"__gc", lua_ip_destroy}, |
|
|
|
{"__lt", lua_ip_less_than}, |
|
|
|
{NULL, NULL} |
|
|
|
}; |
|
|
|
|
|
|
@@ -557,6 +565,24 @@ lua_ip_is_local (lua_State *L) |
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
static gint |
|
|
|
lua_ip_less_than (lua_State *L) |
|
|
|
{ |
|
|
|
LUA_TRACE_POINT; |
|
|
|
struct rspamd_lua_ip *ip = lua_check_ip (L, 1), |
|
|
|
*other = lua_check_ip (L, 2); |
|
|
|
|
|
|
|
if (ip && other) { |
|
|
|
lua_pushboolean (L, |
|
|
|
rspamd_inet_address_compare (ip->addr, other->addr, true) < 0); |
|
|
|
} |
|
|
|
else { |
|
|
|
lua_pushnil (L); |
|
|
|
} |
|
|
|
|
|
|
|
return 1; |
|
|
|
} |
|
|
|
|
|
|
|
void |
|
|
|
rspamd_lua_ip_push (lua_State *L, rspamd_inet_addr_t *addr) |
|
|
|
{ |