From 57fad95e4352c72c852d740e54fd693a446c552f Mon Sep 17 00:00:00 2001
From: Zhuoyun Wei <wzyboy@wzyboy.org>
Date: Tue, 29 Mar 2016 18:21:41 +0800
Subject: [PATCH] Support unixgram syslog address

- Consider unixgram:// as a valid URL prefix
- Parse unixgram:// addresses
- Update docs

Signed-off-by: Zhuoyun Wei <wzyboy@wzyboy.org>
---
 daemon/logger/syslog/syslog.go | 4 ++--
 docs/admin/logging/overview.md | 1 +
 pkg/urlutil/urlutil.go         | 2 +-
 pkg/urlutil/urlutil_test.go    | 1 +
 4 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/daemon/logger/syslog/syslog.go b/daemon/logger/syslog/syslog.go
index 99e03278ce..a61417c0cb 100644
--- a/daemon/logger/syslog/syslog.go
+++ b/daemon/logger/syslog/syslog.go
@@ -152,8 +152,8 @@ func parseAddress(address string) (string, string, error) {
 		return "", "", err
 	}
 
-	// unix socket validation
-	if url.Scheme == "unix" {
+	// unix and unixgram socket validation
+	if url.Scheme == "unix" || url.Scheme == "unixgram" {
 		if _, err := os.Stat(url.Path); err != nil {
 			return "", "", err
 		}
diff --git a/docs/admin/logging/overview.md b/docs/admin/logging/overview.md
index 8a7cd12ffb..d00b4d633a 100644
--- a/docs/admin/logging/overview.md
+++ b/docs/admin/logging/overview.md
@@ -74,6 +74,7 @@ The following logging options are supported for the `syslog` logging driver:
 
     --log-opt syslog-address=[tcp|udp|tcp+tls]://host:port
     --log-opt syslog-address=unix://path
+    --log-opt syslog-address=unixgram://path
     --log-opt syslog-facility=daemon
     --log-opt syslog-tls-ca-cert=/etc/ca-certificates/custom/ca.pem
     --log-opt syslog-tls-cert=/etc/ca-certificates/custom/cert.pem
diff --git a/pkg/urlutil/urlutil.go b/pkg/urlutil/urlutil.go
index 1135a4c6ce..44152873b1 100644
--- a/pkg/urlutil/urlutil.go
+++ b/pkg/urlutil/urlutil.go
@@ -11,7 +11,7 @@ var (
 	validPrefixes = map[string][]string{
 		"url":       {"http://", "https://"},
 		"git":       {"git://", "github.com/", "git@"},
-		"transport": {"tcp://", "tcp+tls://", "udp://", "unix://"},
+		"transport": {"tcp://", "tcp+tls://", "udp://", "unix://", "unixgram://"},
 	}
 	urlPathWithFragmentSuffix = regexp.MustCompile(".git(?:#.+)?$")
 )
diff --git a/pkg/urlutil/urlutil_test.go b/pkg/urlutil/urlutil_test.go
index 86d48cfe23..75eb464fe5 100644
--- a/pkg/urlutil/urlutil_test.go
+++ b/pkg/urlutil/urlutil_test.go
@@ -23,6 +23,7 @@ var (
 		"tcp+tls://example.com",
 		"udp://example.com",
 		"unix:///example",
+		"unixgram:///example",
 	}
 )