1*7b8696bfSLutz Donnerhacke /* 2*7b8696bfSLutz Donnerhacke * SPDX-License-Identifier: BSD-3-Clause 3*7b8696bfSLutz Donnerhacke * 4*7b8696bfSLutz Donnerhacke * Copyright 2021 Lutz Donnerhacke 5*7b8696bfSLutz Donnerhacke * 6*7b8696bfSLutz Donnerhacke * Redistribution and use in source and binary forms, with or without 7*7b8696bfSLutz Donnerhacke * modification, are permitted provided that the following conditions 8*7b8696bfSLutz Donnerhacke * are met: 9*7b8696bfSLutz Donnerhacke * 10*7b8696bfSLutz Donnerhacke * 1. Redistributions of source code must retain the above copyright 11*7b8696bfSLutz Donnerhacke * notice, this list of conditions and the following disclaimer. 12*7b8696bfSLutz Donnerhacke * 2. Redistributions in binary form must reproduce the above 13*7b8696bfSLutz Donnerhacke * copyright notice, this list of conditions and the following 14*7b8696bfSLutz Donnerhacke * disclaimer in the documentation and/or other materials provided 15*7b8696bfSLutz Donnerhacke * with the distribution. 16*7b8696bfSLutz Donnerhacke * 3. Neither the name of the copyright holder nor the names of its 17*7b8696bfSLutz Donnerhacke * contributors may be used to endorse or promote products derived 18*7b8696bfSLutz Donnerhacke * from this software without specific prior written permission. 19*7b8696bfSLutz Donnerhacke * 20*7b8696bfSLutz Donnerhacke * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 21*7b8696bfSLutz Donnerhacke * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, 22*7b8696bfSLutz Donnerhacke * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 23*7b8696bfSLutz Donnerhacke * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE 24*7b8696bfSLutz Donnerhacke * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS 25*7b8696bfSLutz Donnerhacke * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 26*7b8696bfSLutz Donnerhacke * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED 27*7b8696bfSLutz Donnerhacke * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 28*7b8696bfSLutz Donnerhacke * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON 29*7b8696bfSLutz Donnerhacke * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR 30*7b8696bfSLutz Donnerhacke * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF 31*7b8696bfSLutz Donnerhacke * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*7b8696bfSLutz Donnerhacke * SUCH DAMAGE. 33*7b8696bfSLutz Donnerhacke */ 34c1fbb54fSLutz Donnerhacke #include <sys/types.h> 35c1fbb54fSLutz Donnerhacke 36c1fbb54fSLutz Donnerhacke #include <arpa/inet.h> 37c1fbb54fSLutz Donnerhacke #include <netinet/ip.h> 38c1fbb54fSLutz Donnerhacke #include <netinet/udp.h> 39c1fbb54fSLutz Donnerhacke 40c1fbb54fSLutz Donnerhacke #ifndef _UTIL_H 41c1fbb54fSLutz Donnerhacke #define _UTIL_H 42c1fbb54fSLutz Donnerhacke 43c1fbb54fSLutz Donnerhacke int randcmp(const void *a, const void *b); 44c1fbb54fSLutz Donnerhacke void hexdump(void *p, size_t len); 45c1fbb54fSLutz Donnerhacke struct ip * ip_packet(struct in_addr src, struct in_addr dst, u_char protocol, size_t len); 46c1fbb54fSLutz Donnerhacke struct udphdr * set_udp(struct ip *p, u_short sport, u_short dport); 47c1fbb54fSLutz Donnerhacke 48c1fbb54fSLutz Donnerhacke inline int 49c1fbb54fSLutz Donnerhacke addr_eq(struct in_addr a, struct in_addr b) 50c1fbb54fSLutz Donnerhacke { 51c1fbb54fSLutz Donnerhacke return a.s_addr == b.s_addr; 52c1fbb54fSLutz Donnerhacke } 53c1fbb54fSLutz Donnerhacke 54c1fbb54fSLutz Donnerhacke #define a2h(a) ntohl(a.s_addr) 55c1fbb54fSLutz Donnerhacke 56c1fbb54fSLutz Donnerhacke inline int 57c1fbb54fSLutz Donnerhacke rand_range(int min, int max) 58c1fbb54fSLutz Donnerhacke { 59c1fbb54fSLutz Donnerhacke return min + rand()%(max - min); 60c1fbb54fSLutz Donnerhacke } 61c1fbb54fSLutz Donnerhacke 62c1fbb54fSLutz Donnerhacke #endif /* _UTIL_H */ 63