mirror of
https://github.com/systemd/systemd.git
synced 2026-07-14 03:20:22 +00:00
shared: introduce dnssd_srv_type_is_valid() function
This commit is contained in:
@@ -959,6 +959,12 @@ bool dns_srv_type_is_valid(const char *name) {
|
||||
return c == 2; /* exactly two labels */
|
||||
}
|
||||
|
||||
bool dnssd_srv_type_is_valid(const char *name) {
|
||||
return dns_srv_type_is_valid(name) &&
|
||||
((dns_name_endswith(name, "_tcp") > 0) ||
|
||||
(dns_name_endswith(name, "_udp") > 0)); /* Specific to DNS-SD. RFC 6763, Section 7 */
|
||||
}
|
||||
|
||||
bool dns_service_name_is_valid(const char *name) {
|
||||
size_t l;
|
||||
|
||||
|
||||
@@ -96,6 +96,7 @@ bool dns_name_is_single_label(const char *name);
|
||||
int dns_name_to_wire_format(const char *domain, uint8_t *buffer, size_t len, bool canonical);
|
||||
|
||||
bool dns_srv_type_is_valid(const char *name);
|
||||
bool dnssd_srv_type_is_valid(const char *name);
|
||||
bool dns_service_name_is_valid(const char *name);
|
||||
|
||||
int dns_service_join(const char *name, const char *type, const char *domain, char **ret);
|
||||
|
||||
@@ -427,6 +427,30 @@ static void test_dns_srv_type_is_valid(void) {
|
||||
assert_se(!dns_srv_type_is_valid("_piep._foo._udp"));
|
||||
}
|
||||
|
||||
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"));
|
||||
}
|
||||
|
||||
static void test_dns_service_join_one(const char *a, const char *b, const char *c, int r, const char *d) {
|
||||
_cleanup_free_ char *x = NULL, *y = NULL, *z = NULL, *t = NULL;
|
||||
|
||||
@@ -699,6 +723,7 @@ int main(int argc, char *argv[]) {
|
||||
test_dns_name_to_wire_format();
|
||||
test_dns_service_name_is_valid();
|
||||
test_dns_srv_type_is_valid();
|
||||
test_dnssd_srv_type_is_valid();
|
||||
test_dns_service_join();
|
||||
test_dns_service_split();
|
||||
test_dns_name_change_suffix();
|
||||
|
||||
Reference in New Issue
Block a user