blob: 42ec8d3ec6a3c852b1f66df7cf2ba4f396879649 [file] [log] [blame]
/* HEADER Testing domain and target registrations from snmp_service. */
/* Setup configuration reading */
netsnmp_ds_set_string(NETSNMP_DS_LIBRARY_ID,
NETSNMP_DS_LIB_APPTYPE, "testprog");
netsnmp_register_service_handlers();
netsnmp_ds_set_boolean(NETSNMP_DS_LIBRARY_ID,
NETSNMP_DS_LIB_HAVE_READ_CONFIG, 1);
/* Clear all default values */
netsnmp_clear_default_domain();
netsnmp_clear_default_target();
/* Test domain lookup */
OK(netsnmp_register_default_domain("a", "") == 0,
"register an empty token in domain 'a'");
OK(netsnmp_register_default_domain("b", "alfa") == 0,
"register a single token in domain 'b'");
OK(netsnmp_register_default_domain("c", "alfa beta") == 0,
"register two tokens in domain 'c'");
#define OK_STRCMP(name, value, expected) \
OKF(value != NULL && strcmp(expected, value) == 0, \
("Lookup of '" #name "' expected '" expected "', got %s%s%s", \
value ? "'" : "", value ? value : "NULL", value ? "'" : ""))
#define OK_STR_IS_NULL(name, value) \
OKF(value == NULL, \
("Lookup of '" #name "' expected NULL, got %s%s%s", \
value ? "'" : "", value ? value : "NULL", value ? "'" : ""))
#define OK_IS_NULL(name, value) \
OKF(value == NULL, ("Lookup of '" #name "' expected NULL, got %p", value))
#define OK_IS_NOT_NULL(name, value) \
OKF(value != NULL, ("Lookup of '" #name "' expected non-NULL, got %p", value))
{
const char *t;
t = netsnmp_lookup_default_domain("a");
OK_STRCMP(a, t, "");
t = netsnmp_lookup_default_domain("b");
OK_STRCMP(b, t, "alfa");
t = netsnmp_lookup_default_domain("c");
OK_STRCMP(c, t, "alfa");
t = netsnmp_lookup_default_domain("d");
OK_STR_IS_NULL(d, t);
}
{
const char *const *t;
t = netsnmp_lookup_default_domains("a");
OK_IS_NOT_NULL(a, t);
OK_STRCMP(a[0], t[0], "");
OK_STR_IS_NULL(a[1], t[1]);
t = netsnmp_lookup_default_domains("b");
OK_IS_NOT_NULL(b, t);
OK_STRCMP(b[0], t[0], "alfa");
OK_STR_IS_NULL(b[1], t[1]);
t = netsnmp_lookup_default_domains("c");
OK_IS_NOT_NULL(c, t);
OK_STRCMP(c[0], t[0], "alfa");
OK_STRCMP(c[1], t[1], "beta");
OK_STR_IS_NULL(c[2], t[2]);
t = netsnmp_lookup_default_domains("d");
OK_IS_NULL(d, t);
}
{
char cfg[] = "defDomain=b gamma";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domain for 'b'");
}
{
char cfg[] = "defDomain=c gamma delta";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domains for 'c'");
}
{
char cfg[] = "defDomain=b2 gamma";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domain for 'b2'");
}
{
char cfg[] = "defDomain=c2 gamma delta";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "register user domains for 'c2'");
}
{
const char *t;
t = netsnmp_lookup_default_domain("b");
OK_STRCMP(b, t, "gamma");
t = netsnmp_lookup_default_domain("b2");
OK_STRCMP(b2, t, "gamma");
t = netsnmp_lookup_default_domain("c");
OK_STRCMP(c, t, "gamma");
t = netsnmp_lookup_default_domain("c2");
OK_STRCMP(c2, t, "gamma");
}
{
const char *const *t;
t = netsnmp_lookup_default_domains("b");
OK_IS_NOT_NULL(b, t);
OK_STRCMP(b[0], t[0], "gamma");
OK_STR_IS_NULL(b[1], t[1]);
t = netsnmp_lookup_default_domains("b2");
OK_IS_NOT_NULL(b2, t);
OK_STRCMP(b2[0], t[0], "gamma");
OK_STR_IS_NULL(b2[1], t[1]);
t = netsnmp_lookup_default_domains("c");
OK_IS_NOT_NULL(c, t);
OK_STRCMP(c[0], t[0], "gamma");
OK_STRCMP(c[1], t[1], "delta");
OK_STR_IS_NULL(c[2], t[2]);
t = netsnmp_lookup_default_domains("c2");
OK_IS_NOT_NULL(c2, t);
OK_STRCMP(c2[0], t[0], "gamma");
OK_STRCMP(c2[1], t[1], "delta");
OK_STR_IS_NULL(c2[2], t[2]);
}
{
char cfg[] = "defDomain=";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Empty config line");
}
{
const char* t;
char cfg[] = "defDomain=e";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line");
t = netsnmp_lookup_default_domain("e");
OK_STR_IS_NULL(e, t);
}
/* Test target lookup */
OK(netsnmp_register_default_target("b", "alfa", "alfa-domain:b") == 0,
"register a 'alfa:alfa-domain:b' for application 'b'");
OK(netsnmp_register_default_target("b", "beta", "beta-domain:b") == 0,
"register a 'beta:beta-domain:b' for application 'b'");
OK(netsnmp_register_default_target("c", "alfa", "alfa-domain:c") == 0,
"register a 'alfa:alfa-domain:c' for application 'c'");
{
const char *t;
t = netsnmp_lookup_default_target("b", "alfa");
OK_STRCMP(b:alfa, t, "alfa-domain:b");
t = netsnmp_lookup_default_target("b", "beta");
OK_STRCMP(b:beta, t, "beta-domain:b");
t = netsnmp_lookup_default_target("c", "alfa");
OK_STRCMP(c:alfa, t, "alfa-domain:c");
t = netsnmp_lookup_default_target("a", "alfa");
OK_STR_IS_NULL(a:alfa, t);
t = netsnmp_lookup_default_target("b", "gamma");
OK_STR_IS_NULL(b:gamma, t);
t = netsnmp_lookup_default_target("c", "beta");
OK_STR_IS_NULL(c:beta, t);
}
{
char cfg[] = "defTarget=b alfa user-alfa:b";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
"register user target 'alfa:user-alfa:b' for application 'b'");
}
{
char cfg[] = "defTarget=b gamma user-gamma:b";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
"register user target 'gamma:user-gamma:b' for application 'b'");
}
{
char cfg[] = "defTarget=c alfa user-alfa:c";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS,
"register user target 'alfa:user-alfa:c' for application 'c'");
}
{
const char *t;
t = netsnmp_lookup_default_target("b", "alfa");
OK_STRCMP(b:alfa, t, "user-alfa:b");
t = netsnmp_lookup_default_target("b", "beta");
OK_STRCMP(b:beta, t, "beta-domain:b");
t = netsnmp_lookup_default_target("c", "alfa");
OK_STRCMP(c:alfa, t, "user-alfa:c");
t = netsnmp_lookup_default_target("a", "alfa");
OK_STR_IS_NULL(a:alfa, t);
t = netsnmp_lookup_default_target("b", "gamma");
OK_STRCMP(b:gamma, t, "user-gamma:b");
t = netsnmp_lookup_default_target("b", "delta");
OK_STR_IS_NULL(b:delta, t);
t = netsnmp_lookup_default_target("c", "beta");
OK_STR_IS_NULL(c:beta, t);
}
{
char cfg[] = "defTarget=";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Empty config line");
}
{
const char* t;
char cfg[] = "defTarget=e1";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line #1");
t = netsnmp_lookup_default_target("e1", "");
OK_STR_IS_NULL(e1:, t);
}
{
const char* t;
char cfg[] = "defTarget=e2 omega";
OK(netsnmp_config(cfg) == SNMPERR_SUCCESS, "Incomplete config line #2");
t = netsnmp_lookup_default_target("e2", "omega");
OK_STR_IS_NULL(e2:omega, t);
}