xref: /freebsd/tests/sys/netinet/libalias/util.h (revision 7b8696bf128754712a24ba98ce2d88eed2ee68dc)
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