/* * This file and its contents are supplied under the terms of the * Common Development and Distribution License ("CDDL"), version 1.0. * You may only use this file in accordance with the terms of version * 1.0 of the CDDL. * * A full copy of the text of the CDDL should have accompanied this * source. A copy of the CDDL is also available via the Internet at * http://www.illumos.org/license/CDDL. */ /* * Copyright 2017, loli10K . All rights reserved. * Copyright 2019 Joyent, Inc. */ #include #include #include #include #include #include #include #include #include #include /* ARGSUSED */ int main(int argc, char *argv[]) { struct sockaddr_un sock; int fd; char *path; size_t size; if (argc != 2) { fprintf(stderr, "usage: %s /path/to/socket\n", argv[0]); exit(1); } path = argv[1]; size = sizeof (sock.sun_path); (void) strncpy(sock.sun_path, (char *)path, size - 1); sock.sun_path[size - 1] = '\0'; sock.sun_family = AF_UNIX; if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) { perror("socket"); return (1); } if (bind(fd, (struct sockaddr *)&sock, sizeof (struct sockaddr_un))) { perror("bind"); return (1); } if (close(fd)) { perror("close"); return (1); } return (0); }