udp_dontroute.c (263445) | udp_dontroute.c (265586) |
---|---|
1/* 2 * Copyright (c) 2014 Spectra Logic Corporation 3 * All rights reserved. | 1/* 2 * Copyright (c) 2014 Spectra Logic Corporation 3 * All rights reserved. |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions, and the following disclaimer, 10 * without modification. 11 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12 * substantially similar to the "NO WARRANTY" disclaimer below 13 * ("Disclaimer") and any redistribution must be conditioned upon 14 * including a substantially similar Disclaimer requirement for further 15 * binary redistribution. | 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright 9 * notice, this list of conditions, and the following disclaimer, 10 * without modification. 11 * 2. Redistributions in binary form must reproduce at minimum a disclaimer 12 * substantially similar to the "NO WARRANTY" disclaimer below 13 * ("Disclaimer") and any redistribution must be conditioned upon 14 * including a substantially similar Disclaimer requirement for further 15 * binary redistribution. |
16 * | 16 * |
17 * NO WARRANTY 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 27 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * POSSIBILITY OF SUCH DAMAGES. | 17 * NO WARRANTY 18 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR 21 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 22 * HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 23 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 24 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 25 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, 26 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING 27 * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28 * POSSIBILITY OF SUCH DAMAGES. |
29 * | 29 * |
30 * Authors: Alan Somers (Spectra Logic Corporation) 31 * | 30 * Authors: Alan Somers (Spectra Logic Corporation) 31 * |
32 * $FreeBSD: head/tests/sys/netinet/udp_dontroute.c 263445 2014-03-20 20:39:41Z asomers $ | 32 * $FreeBSD: stable/10/tests/sys/netinet/udp_dontroute.c 265586 2014-05-07 18:49:25Z asomers $ |
33 */ 34 35#include <arpa/inet.h> 36#include <netinet/in.h> 37#include <sys/types.h> 38#include <sys/socket.h> 39 40#include <err.h> 41#include <errno.h> 42#include <stdio.h> 43#include <stdlib.h> 44#include <string.h> 45 | 33 */ 34 35#include <arpa/inet.h> 36#include <netinet/in.h> 37#include <sys/types.h> 38#include <sys/socket.h> 39 40#include <err.h> 41#include <errno.h> 42#include <stdio.h> 43#include <stdlib.h> 44#include <string.h> 45 |
46/* | 46/* |
47 * Sends a single UDP packet to the provided address, with SO_DONTROUTE set 48 * I couldn't find a way to do this with builtin utilities like nc(1) 49 */ | 47 * Sends a single UDP packet to the provided address, with SO_DONTROUTE set 48 * I couldn't find a way to do this with builtin utilities like nc(1) 49 */ |
50int main(int argc, char **argv) | 50int 51main(int argc, char **argv) |
51{ 52 struct sockaddr_in dst; 53 int s; 54 int opt; 55 int ret; 56 const char* buf = "Hello, World!"; 57 58 if (argc != 2) { --- 16 unchanged lines hidden (view full) --- 75 if (dst.sin_addr.s_addr == htonl(INADDR_NONE)) { 76 fprintf(stderr, "Invalid address: %s\n", argv[1]); 77 exit(2); 78 } 79 ret = sendto(s, buf, strlen(buf), 0, (struct sockaddr*)&dst, 80 dst.sin_len); 81 if (ret == -1) 82 err(errno, "sendto"); | 52{ 53 struct sockaddr_in dst; 54 int s; 55 int opt; 56 int ret; 57 const char* buf = "Hello, World!"; 58 59 if (argc != 2) { --- 16 unchanged lines hidden (view full) --- 76 if (dst.sin_addr.s_addr == htonl(INADDR_NONE)) { 77 fprintf(stderr, "Invalid address: %s\n", argv[1]); 78 exit(2); 79 } 80 ret = sendto(s, buf, strlen(buf), 0, (struct sockaddr*)&dst, 81 dst.sin_len); 82 if (ret == -1) 83 err(errno, "sendto"); |
83 | 84 |
84 return (0); 85} | 85 return (0); 86} |