CLEANUP: hlua: Use net_addr structure internally to parse and compare addresses
hlua_addr structure may be replaced by net_addr structure to parse and
compare addresses. Both structures are similar.
diff --git a/include/haproxy/hlua-t.h b/include/haproxy/hlua-t.h
index f843ebd..964654c 100644
--- a/include/haproxy/hlua-t.h
+++ b/include/haproxy/hlua-t.h
@@ -176,20 +176,6 @@
int len;
};
-struct hlua_addr {
- union {
- struct {
- struct in_addr ip;
- struct in_addr mask;
- } v4;
- struct {
- struct in6_addr ip;
- struct in6_addr mask;
- } v6;
- } addr;
- int type;
-};
-
#else /* USE_LUA */
/************************ For use when Lua is disabled ********************/
diff --git a/src/hlua_fcn.c b/src/hlua_fcn.c
index 0af89b4..c2d2681 100644
--- a/src/hlua_fcn.c
+++ b/src/hlua_fcn.c
@@ -33,6 +33,7 @@
#include <haproxy/stats.h>
#include <haproxy/stick_table.h>
#include <haproxy/time.h>
+#include <haproxy/tools.h>
/* Contains the class reference of the concat object. */
static int class_concat_ref;
@@ -1481,24 +1482,24 @@
int hlua_parse_addr(lua_State *L)
{
- struct hlua_addr *addr;
+ struct net_addr *addr;
const char *str = luaL_checkstring(L, 1);
unsigned char mask;
- addr = lua_newuserdata(L, sizeof(struct hlua_addr));
+ addr = lua_newuserdata(L, sizeof(struct net_addr));
if (!addr) {
lua_pushnil(L);
return 1;
}
if (str2net(str, PAT_MF_NO_DNS, &addr->addr.v4.ip, &addr->addr.v4.mask)) {
- addr->type = AF_INET;
+ addr->family = AF_INET;
return 1;
}
if (str62net(str, &addr->addr.v6.ip, &mask)) {
len2mask6(mask, &addr->addr.v6.mask);
- addr->type = AF_INET6;
+ addr->family = AF_INET6;
return 1;
}
@@ -1509,8 +1510,8 @@
int hlua_match_addr(lua_State *L)
{
- struct hlua_addr *addr1;
- struct hlua_addr *addr2;
+ struct net_addr *addr1;
+ struct net_addr *addr2;
if (!lua_isuserdata(L, 1) ||
!lua_isuserdata(L, 2)) {
@@ -1521,12 +1522,12 @@
addr1 = lua_touserdata(L, 1);
addr2 = lua_touserdata(L, 2);
- if (addr1->type != addr2->type) {
+ if (addr1->family != addr2->family) {
lua_pushboolean(L, 0);
return 1;
}
- if (addr1->type == AF_INET) {
+ if (addr1->family == AF_INET) {
if ((addr1->addr.v4.ip.s_addr & addr2->addr.v4.mask.s_addr) ==
(addr2->addr.v4.ip.s_addr & addr1->addr.v4.mask.s_addr)) {
lua_pushboolean(L, 1);