1cd915ab7SMaxim Konovalov /*- 2cd915ab7SMaxim Konovalov * Copyright (c) 2006 Maxim Konovalov 3cd915ab7SMaxim Konovalov * All rights reserved. 4cd915ab7SMaxim Konovalov * 5cd915ab7SMaxim Konovalov * Redistribution and use in source and binary forms, with or without 6cd915ab7SMaxim Konovalov * modification, are permitted provided that the following conditions 7cd915ab7SMaxim Konovalov * are met: 8cd915ab7SMaxim Konovalov * 1. Redistributions of source code must retain the above copyright 9cd915ab7SMaxim Konovalov * notice, this list of conditions and the following disclaimer. 10cd915ab7SMaxim Konovalov * 2. Redistributions in binary form must reproduce the above copyright 11cd915ab7SMaxim Konovalov * notice, this list of conditions and the following disclaimer in the 12cd915ab7SMaxim Konovalov * documentation and/or other materials provided with the distribution. 13cd915ab7SMaxim Konovalov * 14cd915ab7SMaxim Konovalov * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 15cd915ab7SMaxim Konovalov * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 16cd915ab7SMaxim Konovalov * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 17cd915ab7SMaxim Konovalov * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 18cd915ab7SMaxim Konovalov * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 19cd915ab7SMaxim Konovalov * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 20cd915ab7SMaxim Konovalov * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 21cd915ab7SMaxim Konovalov * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 22cd915ab7SMaxim Konovalov * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 23cd915ab7SMaxim Konovalov * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 24cd915ab7SMaxim Konovalov * SUCH DAMAGE. 25cd915ab7SMaxim Konovalov * 26cd915ab7SMaxim Konovalov * $FreeBSD$ 27cd915ab7SMaxim Konovalov */ 28cd915ab7SMaxim Konovalov 29cd915ab7SMaxim Konovalov /* 30cd915ab7SMaxim Konovalov * Bug in IP code panics the system at close(2) on 31cd915ab7SMaxim Konovalov * connected SOCK_RAW, IPPROTO_IP socket. 32cd915ab7SMaxim Konovalov */ 33cd915ab7SMaxim Konovalov 34cd915ab7SMaxim Konovalov #include <sys/types.h> 35cd915ab7SMaxim Konovalov #include <sys/socket.h> 36cd915ab7SMaxim Konovalov #include <netinet/in.h> 37cd915ab7SMaxim Konovalov 38cd915ab7SMaxim Konovalov #include <err.h> 39cd915ab7SMaxim Konovalov #include <stdio.h> 40cd915ab7SMaxim Konovalov #include <stdlib.h> 41cd915ab7SMaxim Konovalov #include <strings.h> 42cd915ab7SMaxim Konovalov #include <unistd.h> 43cd915ab7SMaxim Konovalov 44cd915ab7SMaxim Konovalov static void 45cd915ab7SMaxim Konovalov usage(void) 46cd915ab7SMaxim Konovalov { 47cd915ab7SMaxim Konovalov 48cd915ab7SMaxim Konovalov fprintf(stderr, "rawconnect: no arguments\n"); 49cd915ab7SMaxim Konovalov exit(1); 50cd915ab7SMaxim Konovalov } 51cd915ab7SMaxim Konovalov 52cd915ab7SMaxim Konovalov int 53cd915ab7SMaxim Konovalov main(int argc, __unused char *argv[]) 54cd915ab7SMaxim Konovalov { 55cd915ab7SMaxim Konovalov struct sockaddr_in sin; 56cd915ab7SMaxim Konovalov int sock; 57cd915ab7SMaxim Konovalov 58cd915ab7SMaxim Konovalov if (argc != 1) 59cd915ab7SMaxim Konovalov usage(); 60cd915ab7SMaxim Konovalov 61cd915ab7SMaxim Konovalov bzero(&sin, sizeof(sin)); 62cd915ab7SMaxim Konovalov sin.sin_len = sizeof(sin); 63cd915ab7SMaxim Konovalov sin.sin_family = AF_INET; 64cd915ab7SMaxim Konovalov sin.sin_addr.s_addr = INADDR_LOOPBACK; 65cd915ab7SMaxim Konovalov sin.sin_port = htons(65534); 66cd915ab7SMaxim Konovalov 67cd915ab7SMaxim Konovalov sock = socket(PF_INET, SOCK_RAW, IPPROTO_IP); 68cd915ab7SMaxim Konovalov if (sock == -1) 69cd915ab7SMaxim Konovalov err(1, "socket"); 70cd915ab7SMaxim Konovalov 71cd915ab7SMaxim Konovalov if (connect(sock, (struct sockaddr *)&sin, sizeof(sin)) == -1) 72cd915ab7SMaxim Konovalov err(1, "connect"); 73cd915ab7SMaxim Konovalov 74cd915ab7SMaxim Konovalov close(sock); 75cd915ab7SMaxim Konovalov 76cd915ab7SMaxim Konovalov return (0); 77cd915ab7SMaxim Konovalov } 78