| /* 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); |
| } |