MINOR: tools: introduce new option PA_O_DEFAULT_DGRAM on str2sa_range.

str2sa_range function options PA_O_DGRAM and PA_O_STREAM are used to
define the supported address types but also to set the default type
if it is not explicit. If the used address support both STREAM and DGRAM,
the default was always set to STREAM.

This patch introduce a new option PA_O_DEFAULT_DGRAM to force the
default to DGRAM type if it is not explicit in the address field
and both STREAM and DGRAM are supported. If only DGRAM or only STREAM
is supported, it continues to be considered as the default.
diff --git a/include/haproxy/tools-t.h b/include/haproxy/tools-t.h
index 488b90d..805ade6 100644
--- a/include/haproxy/tools-t.h
+++ b/include/haproxy/tools-t.h
@@ -95,10 +95,11 @@
 #define PA_O_PORT_OFS           0x00000010   /* port offsets are supported */
 #define PA_O_SOCKET_FD          0x00000020   /* inherited socket FDs are supported */
 #define PA_O_RAW_FD             0x00000040   /* inherited raw FDs are supported (pipes, ttys, ...) */
-#define PA_O_DGRAM              0x00000080   /* the address will be used for a datagram socket (in or out) */
-#define PA_O_STREAM             0x00000100   /* the address will be used for streams (in or out) */
+#define PA_O_DGRAM              0x00000080   /* the address can be used for a datagram socket (in or out) */
+#define PA_O_STREAM             0x00000100   /* the address can be used for streams (in or out) */
 #define PA_O_XPRT               0x00000200   /* transport protocols may be specified */
 #define PA_O_CONNECT            0x00000400   /* the protocol must have a ->connect method */
+#define PA_O_DEFAULT_DGRAM      0x00000800   /* by default, this address will be used for a datagram socket */
 
 /* UTF-8 decoder status */
 #define UTF8_CODE_OK       0x00
diff --git a/src/tools.c b/src/tools.c
index f39ec1e..3f3460d 100644
--- a/src/tools.c
+++ b/src/tools.c
@@ -910,7 +910,9 @@
 	memset(&ss, 0, sizeof(ss));
 
 	/* prepare the default socket types */
-	if ((opts & (PA_O_STREAM|PA_O_DGRAM)) == PA_O_DGRAM)
+	if (((opts & (PA_O_STREAM|PA_O_DGRAM)) == PA_O_DGRAM))
+	    || (((opts & (PA_O_STREAM|PA_O_DGRAM)) == (PA_O_DGRAM|PA_O_STREAM))
+	        && (opts & PA_O_DEFAULT_DGRAM))
 		sock_type = ctrl_type = SOCK_DGRAM;
 	else
 		sock_type = ctrl_type = SOCK_STREAM;