unix_socket.c revision 294641
111126Sjulian/*- 2103722Sphk * Copyright (c) 2006 Robert N. M. Watson 311126Sjulian * All rights reserved. 411126Sjulian * 511126Sjulian * Redistribution and use in source and binary forms, with or without 611126Sjulian * modification, are permitted provided that the following conditions 711126Sjulian * are met: 811126Sjulian * 1. Redistributions of source code must retain the above copyright 911126Sjulian * notice, this list of conditions and the following disclaimer. 1011126Sjulian * 2. Redistributions in binary form must reproduce the above copyright 1111126Sjulian * notice, this list of conditions and the following disclaimer in the 1211126Sjulian * documentation and/or other materials provided with the distribution. 1311126Sjulian * 14103722Sphk * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15103722Sphk * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1611126Sjulian * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17103722Sphk * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1811126Sjulian * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 1911126Sjulian * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2011126Sjulian * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2111126Sjulian * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2211126Sjulian * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2311126Sjulian * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2411126Sjulian * SUCH DAMAGE. 2511126Sjulian * 2611126Sjulian * $FreeBSD: stable/10/tools/regression/sockets/unix_socket/unix_socket.c 294641 2016-01-23 21:04:34Z ngie $ 27116182Sobrien */ 28116182Sobrien 29116182Sobrien/* 3011126Sjulian * Simple UNIX domain socket regression test: create and tear down various 3148936Sphk * supported and unsupported socket types. 3283366Sjulian */ 33111179Sphk 3490737Sgreen#include <sys/types.h> 3590737Sgreen#include <sys/socket.h> 3650549Sphk#include <sys/un.h> 3736735Sdfr 3848936Sphk#include <err.h> 3911126Sjulian#include <errno.h> 4012954Sjulian#include <unistd.h> 4148936Sphk 4265374Sphkint 4349535Sphkmain(void) 4411126Sjulian{ 4569774Sphk int sock, socks[2]; 4648936Sphk 47111622Sphk sock = socket(PF_LOCAL, SOCK_STREAM, 0); 48111622Sphk if (sock < 0) 49111622Sphk err(-1, "socket(PF_LOCAL, SOCK_STREAM, 0)"); 5050522Sphk close(sock); 5150522Sphk 5250522Sphk sock = socket(PF_LOCAL, SOCK_DGRAM, 0); 5350522Sphk if (sock < 0) 5450522Sphk err(-1, "socket(PF_LOCAL, SOCK_DGRAM, 0)"); 5548936Sphk close(sock); 5650522Sphk 5750522Sphk sock = socket(PF_LOCAL, SOCK_RAW, 0); 5848936Sphk if (sock >= 0) { 5948936Sphk close(sock); 60104043Sphk errx(-1, "socket(PF_LOCAL, SOCK_RAW, 0) returned %d", sock); 6148936Sphk } 62104043Sphk if (errno != EPROTOTYPE) 6348936Sphk err(-1, "socket(PF_LOCAL, SOCK_RAW, 0)"); 64104043Sphk 6550549Sphk if (socketpair(PF_LOCAL, SOCK_STREAM, 0, socks) < 0) 6689118Smsmith err(-1, "socketpair(PF_LOCAL, SOCK_STREAM, 0, socks)"); 6789118Smsmith if (socks[0] < 0) 6850549Sphk errx(-1, "socketpair(PF_LOCAL, SOCK_STREAM, 0, socks) [0] < 0"); 6950549Sphk if (socks[1] < 0) 7050549Sphk errx(-1, "socketpair(PF_LOCAL, SOCK_STREAM, 0, socks) [1] < 1"); 71111179Sphk close(socks[0]); 7285603Sphk close(socks[1]); 73111179Sphk 74111179Sphk if (socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks) < 0) 75111179Sphk err(-1, "socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks)"); 76111179Sphk if (socks[0] < 0) 77111179Sphk errx(-1, "socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks) [0] < 0"); 78111179Sphk if (socks[1] < 0) 79111179Sphk errx(-1, "socketpair(PF_LOCAL, SOCK_DGRAM, 0, socks) [1] < 1"); 80111179Sphk close(socks[0]); 81111179Sphk close(socks[1]); 82111179Sphk 83111179Sphk return (0); 84111179Sphk} 85111179Sphk