|
|
|
@ -122,6 +122,22 @@ struct acl {
|
|
|
|
|
#define TACL_A AST_SENSE_ALLOW
|
|
|
|
|
#define TACL_D AST_SENSE_DENY
|
|
|
|
|
|
|
|
|
|
static int build_ha(const struct acl *acl, size_t len, struct ast_ha **ha, const char *acl_name, int *err, struct ast_test *test, enum ast_test_result_state *res)
|
|
|
|
|
{
|
|
|
|
|
size_t i;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < len; ++i) {
|
|
|
|
|
if (!(*ha = ast_append_ha(acl[i].access, acl[i].host, *ha, err))) {
|
|
|
|
|
ast_test_status_update(test, "Failed to add rule %s with access %s to %s\n",
|
|
|
|
|
acl[i].host, acl[i].access, acl_name);
|
|
|
|
|
*res = AST_TEST_FAIL;
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
AST_TEST_DEFINE(acl)
|
|
|
|
|
{
|
|
|
|
|
struct acl permitallv4 = { "0.0.0.0/0", "permit" };
|
|
|
|
@ -211,21 +227,6 @@ AST_TEST_DEFINE(acl)
|
|
|
|
|
int err = 0;
|
|
|
|
|
int i;
|
|
|
|
|
|
|
|
|
|
auto int build_ha(const struct acl *acl, size_t len, struct ast_ha **ha, const char *acl_name);
|
|
|
|
|
auto int build_ha(const struct acl *acl, size_t len, struct ast_ha **ha, const char *acl_name) {
|
|
|
|
|
size_t i;
|
|
|
|
|
|
|
|
|
|
for (i = 0; i < len; ++i) {
|
|
|
|
|
if (!(*ha = ast_append_ha(acl[i].access, acl[i].host, *ha, &err))) {
|
|
|
|
|
ast_test_status_update(test, "Failed to add rule %s with access %s to %s\n",
|
|
|
|
|
acl[i].host, acl[i].access, acl_name);
|
|
|
|
|
res = AST_TEST_FAIL;
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
switch (cmd) {
|
|
|
|
|
case TEST_INIT:
|
|
|
|
@ -263,31 +264,31 @@ AST_TEST_DEFINE(acl)
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (build_ha(acl1, ARRAY_LEN(acl1), &ha1, "ha1") != 0) {
|
|
|
|
|
if (build_ha(acl1, ARRAY_LEN(acl1), &ha1, "ha1", &err, test, &res) != 0) {
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (build_ha(acl2, ARRAY_LEN(acl2), &ha2, "ha2") != 0) {
|
|
|
|
|
if (build_ha(acl2, ARRAY_LEN(acl2), &ha2, "ha2", &err, test, &res) != 0) {
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (build_ha(acl3, ARRAY_LEN(acl3), &ha3, "ha3") != 0) {
|
|
|
|
|
if (build_ha(acl3, ARRAY_LEN(acl3), &ha3, "ha3", &err, test, &res) != 0) {
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (build_ha(acl4, ARRAY_LEN(acl4), &ha4, "ha4") != 0) {
|
|
|
|
|
if (build_ha(acl4, ARRAY_LEN(acl4), &ha4, "ha4", &err, test, &res) != 0) {
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (build_ha(acl5, ARRAY_LEN(acl5), &ha5, "ha5") != 0) {
|
|
|
|
|
if (build_ha(acl5, ARRAY_LEN(acl5), &ha5, "ha5", &err, test, &res) != 0) {
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (build_ha(acl6, ARRAY_LEN(acl6), &ha6, "ha6") != 0) {
|
|
|
|
|
if (build_ha(acl6, ARRAY_LEN(acl6), &ha6, "ha6", &err, test, &res) != 0) {
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (build_ha(acl7, ARRAY_LEN(acl7), &ha7, "ha7") != 0) {
|
|
|
|
|
if (build_ha(acl7, ARRAY_LEN(acl7), &ha7, "ha7", &err, test, &res) != 0) {
|
|
|
|
|
goto acl_cleanup;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|