Yes, when I wrote "It works" - it means "no error has been throwed".
Perhaps, it would be better to implement something like "... ip daddr . ip
protocol . protocol dport @xyz ..."
As workaround we can use (in most cases it is the preferable way):
"... ip daddr . tcp dport @xyz_tcp ..."
"... ip daddr . udp dport @xyz_udp ..."
But because DNS has TCP extension for big answers - we should repeat same rules
("1.2.3.4 . 53") in both sets.
It is really funny: you can create a set with concatenated ip:proto:port, but
you can not use it :)
Vladimir Khailenko