source: mainline/uspace/lib/c/include/inet/addr.h@ eec201d

Last change on this file since eec201d was a35b458, checked in by Jiří Zárevúcky <zarevucky.jiri@…>, 7 years ago

style: Remove trailing whitespace on _all_ lines, including empty ones, for particular file types.

Command used: tools/srepl '\s\+$' '' -- *.c *.h *.py *.sh *.s *.S *.ag

Currently, whitespace on empty lines is very inconsistent.
There are two basic choices: Either remove the whitespace, or keep empty lines
indented to the level of surrounding code. The former is AFAICT more common,
and also much easier to do automatically.

Alternatively, we could write script for automatic indentation, and use that
instead. However, if such a script exists, it's possible to use the indented
style locally, by having the editor apply relevant conversions on load/save,
without affecting remote repository. IMO, it makes more sense to adopt
the simpler rule.

  • Property mode set to 100644
File size: 4.2 KB
Line 
1/*
2 * Copyright (c) 2013 Jiri Svoboda
3 * All rights reserved.
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 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29/** @addtogroup libc
30 * @{
31 */
32/** @file
33 */
34
35#ifndef LIBC_INET_ADDR_H_
36#define LIBC_INET_ADDR_H_
37
38#include <errno.h>
39#include <stdint.h>
40
41typedef uint32_t addr32_t;
42typedef uint8_t addr48_t[6];
43typedef uint8_t addr128_t[16];
44
45typedef enum {
46 /** Any IP protocol version */
47 ip_any,
48 /** IPv4 */
49 ip_v4,
50 /** IPv6 */
51 ip_v6
52} ip_ver_t;
53
54/** Node address */
55typedef struct {
56 /** IP version */
57 ip_ver_t version;
58 union {
59 addr32_t addr;
60 addr128_t addr6;
61 };
62} inet_addr_t;
63
64/** Network address */
65typedef struct {
66 /** IP version */
67 ip_ver_t version;
68
69 /** Address */
70 union {
71 addr32_t addr;
72 addr128_t addr6;
73 };
74
75 /** Number of valid bits */
76 uint8_t prefix;
77} inet_naddr_t;
78
79extern const addr32_t addr32_broadcast_all_hosts;
80extern const addr48_t addr48_broadcast;
81
82extern void addr48(const addr48_t, addr48_t);
83extern void addr128(const addr128_t, addr128_t);
84
85extern int addr48_compare(const addr48_t, const addr48_t);
86extern int addr128_compare(const addr128_t, const addr128_t);
87
88extern void addr48_solicited_node(const addr128_t, addr48_t);
89
90extern void host2addr128_t_be(const addr128_t, addr128_t);
91extern void addr128_t_be2host(const addr128_t, addr128_t);
92
93extern void inet_addr(inet_addr_t *, uint8_t, uint8_t, uint8_t, uint8_t);
94extern void inet_naddr(inet_naddr_t *, uint8_t, uint8_t, uint8_t, uint8_t,
95 uint8_t);
96
97extern void inet_addr6(inet_addr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
98 uint16_t, uint16_t, uint16_t, uint16_t);
99extern void inet_naddr6(inet_naddr_t *, uint16_t, uint16_t, uint16_t, uint16_t,
100 uint16_t, uint16_t, uint16_t, uint16_t, uint8_t);
101
102extern void inet_naddr_addr(const inet_naddr_t *, inet_addr_t *);
103extern void inet_addr_naddr(const inet_addr_t *, uint8_t, inet_naddr_t *);
104
105extern void inet_addr_any(inet_addr_t *);
106extern void inet_naddr_any(inet_naddr_t *);
107
108extern int inet_addr_compare(const inet_addr_t *, const inet_addr_t *);
109extern int inet_addr_is_any(const inet_addr_t *);
110
111extern int inet_naddr_compare(const inet_naddr_t *, const inet_addr_t *);
112extern int inet_naddr_compare_mask(const inet_naddr_t *, const inet_addr_t *);
113
114extern errno_t inet_addr_parse(const char *, inet_addr_t *, char **);
115extern errno_t inet_naddr_parse(const char *, inet_naddr_t *, char **);
116
117extern errno_t inet_addr_format(const inet_addr_t *, char **);
118extern errno_t inet_naddr_format(const inet_naddr_t *, char **);
119
120extern ip_ver_t inet_addr_get(const inet_addr_t *, addr32_t *, addr128_t *);
121extern ip_ver_t inet_naddr_get(const inet_naddr_t *, addr32_t *, addr128_t *,
122 uint8_t *);
123
124extern void inet_addr_set(addr32_t, inet_addr_t *);
125extern void inet_naddr_set(addr32_t, uint8_t, inet_naddr_t *);
126
127extern void inet_addr_set6(addr128_t, inet_addr_t *);
128extern void inet_naddr_set6(addr128_t, uint8_t, inet_naddr_t *);
129
130#endif
131
132/** @}
133 */
Note: See TracBrowser for help on using the repository browser.