+ if (setsockcreatecon(scon) < 0) {
+ log_error("Failed to set SELinux context (%s) on socket: %m", scon);
+ if (security_getenforce() == 1)
+ return -errno;
+ }
+
+ fd = socket(socket_address_family(a), a->type | SOCK_NONBLOCK | SOCK_CLOEXEC, 0);
+ r = fd < 0 ? -errno : 0;
+
+ setsockcreatecon(NULL);
+
+ if (r < 0)
+ return r;