コード例 #1
0
int config_parse_dnssd_service_type(const char *unit, const char *filename, unsigned line, const char *section, unsigned section_line, const char *lvalue, int ltype, const char *rvalue, void *data, void *userdata) {
        DnssdService *s = userdata;
        int r;

        assert(filename);
        assert(lvalue);
        assert(rvalue);
        assert(s);

        if (isempty(rvalue)) {
                log_syntax(unit, LOG_ERR, filename, line, 0, "Service type can't be empty. Ignoring.");
                return -EINVAL;
        }

        if (!dnssd_srv_type_is_valid(rvalue)) {
                log_syntax(unit, LOG_ERR, filename, line, 0, "Service type is invalid. Ignoring.");
                return -EINVAL;
        }

        r = free_and_strdup(&s->type, rvalue);
        if (r < 0)
                return log_oom();

        return 0;
}
コード例 #2
0
ファイル: test-dns-domain.c プロジェクト: dankor/systemd
static void test_dnssd_srv_type_is_valid(void) {

        assert_se(dnssd_srv_type_is_valid("_http._tcp"));
        assert_se(dnssd_srv_type_is_valid("_foo-bar._tcp"));
        assert_se(dnssd_srv_type_is_valid("_w._udp"));
        assert_se(dnssd_srv_type_is_valid("_a800._tcp"));
        assert_se(dnssd_srv_type_is_valid("_a-800._tcp"));

        assert_se(!dnssd_srv_type_is_valid(NULL));
        assert_se(!dnssd_srv_type_is_valid(""));
        assert_se(!dnssd_srv_type_is_valid("x"));
        assert_se(!dnssd_srv_type_is_valid("_foo"));
        assert_se(!dnssd_srv_type_is_valid("_tcp"));
        assert_se(!dnssd_srv_type_is_valid("_"));
        assert_se(!dnssd_srv_type_is_valid("_foo."));
        assert_se(!dnssd_srv_type_is_valid("_föo._tcp"));
        assert_se(!dnssd_srv_type_is_valid("_f\no._tcp"));
        assert_se(!dnssd_srv_type_is_valid("_800._tcp"));
        assert_se(!dnssd_srv_type_is_valid("_-800._tcp"));
        assert_se(!dnssd_srv_type_is_valid("_-foo._tcp"));
        assert_se(!dnssd_srv_type_is_valid("_piep._foo._udp"));
        assert_se(!dnssd_srv_type_is_valid("_foo._unknown"));
}