1*a629ded1SLOLi /*
2*a629ded1SLOLi * This file and its contents are supplied under the terms of the
3*a629ded1SLOLi * Common Development and Distribution License ("CDDL"), version 1.0.
4*a629ded1SLOLi * You may only use this file in accordance with the terms of version
5*a629ded1SLOLi * 1.0 of the CDDL.
6*a629ded1SLOLi *
7*a629ded1SLOLi * A full copy of the text of the CDDL should have accompanied this
8*a629ded1SLOLi * source. A copy of the CDDL is also available via the Internet at
9*a629ded1SLOLi * http://www.illumos.org/license/CDDL.
10*a629ded1SLOLi */
11*a629ded1SLOLi
12*a629ded1SLOLi /*
13*a629ded1SLOLi * Copyright 2017, loli10K <ezomori.nozomu@gmail.com>. All rights reserved.
14*a629ded1SLOLi * Copyright 2019 Joyent, Inc.
15*a629ded1SLOLi */
16*a629ded1SLOLi
17*a629ded1SLOLi #include <fcntl.h>
18*a629ded1SLOLi #include <sys/un.h>
19*a629ded1SLOLi #include <sys/socket.h>
20*a629ded1SLOLi #include <sys/stat.h>
21*a629ded1SLOLi #include <sys/types.h>
22*a629ded1SLOLi #include <unistd.h>
23*a629ded1SLOLi #include <errno.h>
24*a629ded1SLOLi #include <stdio.h>
25*a629ded1SLOLi #include <stdlib.h>
26*a629ded1SLOLi #include <string.h>
27*a629ded1SLOLi
28*a629ded1SLOLi /* ARGSUSED */
29*a629ded1SLOLi int
main(int argc,char * argv[])30*a629ded1SLOLi main(int argc, char *argv[])
31*a629ded1SLOLi {
32*a629ded1SLOLi struct sockaddr_un sock;
33*a629ded1SLOLi int fd;
34*a629ded1SLOLi char *path;
35*a629ded1SLOLi size_t size;
36*a629ded1SLOLi if (argc != 2) {
37*a629ded1SLOLi fprintf(stderr, "usage: %s /path/to/socket\n", argv[0]);
38*a629ded1SLOLi exit(1);
39*a629ded1SLOLi }
40*a629ded1SLOLi path = argv[1];
41*a629ded1SLOLi size = sizeof (sock.sun_path);
42*a629ded1SLOLi (void) strncpy(sock.sun_path, (char *)path, size - 1);
43*a629ded1SLOLi sock.sun_path[size - 1] = '\0';
44*a629ded1SLOLi
45*a629ded1SLOLi sock.sun_family = AF_UNIX;
46*a629ded1SLOLi if ((fd = socket(AF_UNIX, SOCK_DGRAM, 0)) == -1) {
47*a629ded1SLOLi perror("socket");
48*a629ded1SLOLi return (1);
49*a629ded1SLOLi }
50*a629ded1SLOLi if (bind(fd, (struct sockaddr *)&sock, sizeof (struct sockaddr_un))) {
51*a629ded1SLOLi perror("bind");
52*a629ded1SLOLi return (1);
53*a629ded1SLOLi }
54*a629ded1SLOLi if (close(fd)) {
55*a629ded1SLOLi perror("close");
56*a629ded1SLOLi return (1);
57*a629ded1SLOLi }
58*a629ded1SLOLi return (0);
59*a629ded1SLOLi }
60