diff --git a/src/libstrongswan/selectors/traffic_selector.c b/src/libstrongswan/selectors/traffic_selector.c index 12f160224..6b85270f3 100644 --- a/src/libstrongswan/selectors/traffic_selector.c +++ b/src/libstrongswan/selectors/traffic_selector.c @@ -293,15 +293,16 @@ int traffic_selector_printf_hook(printf_hook_data_t *data, written += print_in_hook(data, "%d", this->protocol); } } - - if (has_proto && has_ports) + else { - written += print_in_hook(data, "/"); + written += print_in_hook(data, "0"); } /* build port string */ if (has_ports) { + written += print_in_hook(data, "/"); + if (this->from_port == this->to_port) { struct servent *serv; diff --git a/src/libstrongswan/tests/suites/test_traffic_selector.c b/src/libstrongswan/tests/suites/test_traffic_selector.c index 93361f9bf..26f2f8e14 100644 --- a/src/libstrongswan/tests/suites/test_traffic_selector.c +++ b/src/libstrongswan/tests/suites/test_traffic_selector.c @@ -72,10 +72,13 @@ START_TEST(test_create_from_cidr) verify("10.1.0.1/32[udp]", "10.1.0.1/32[17]", traffic_selector_create_from_cidr("10.1.0.1/32", IPPROTO_UDP, 0, 65535)); + verify("10.1.0.1/32[0/domain]", "10.1.0.1/32[0/53]", + traffic_selector_create_from_cidr("10.1.0.1/32", 0, + 53, 53)); verify("10.1.0.1/32[udp/1234-1235]", "10.1.0.1/32[17/1234-1235]", traffic_selector_create_from_cidr("10.1.0.1/32", IPPROTO_UDP, 1234, 1235)); - verify("10.1.0.0/16[OPAQUE]", NULL, + verify("10.1.0.0/16[0/OPAQUE]", NULL, traffic_selector_create_from_cidr("10.1.0.0/16", 0, 65535, 0)); verify(NULL, NULL,