addr.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2015 Martine Lenders <mlenders@inf.fu-berlin.de>
3  *
4  * This file is subject to the terms and conditions of the GNU Lesser
5  * General Public License v2.1. See the file LICENSE in the top level
6  * directory for more details.
7  */
8 
20 #ifndef NET_IPV4_ADDR_H
21 #define NET_IPV4_ADDR_H
22 
23 #include <stdbool.h>
24 #include <stdint.h>
25 #include <stddef.h>
26 
27 #include "byteorder.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
36 #define IPV4_ADDR_MAX_STR_LEN (sizeof("255.255.255.255"))
37 
41 typedef union {
42  uint8_t u8[4];
44 } ipv4_addr_t;
45 
55 static inline bool ipv4_addr_equal(ipv4_addr_t *a, ipv4_addr_t *b)
56 {
57  return (a->u32.u32 == b->u32.u32);
58 }
59 
72 char *ipv4_addr_to_str(char *result, const ipv4_addr_t *addr, uint8_t result_len);
73 
85 ipv4_addr_t *ipv4_addr_from_str(ipv4_addr_t *result, const char *addr);
86 
101 ipv4_addr_t *ipv4_addr_from_buf(ipv4_addr_t *result, const char *addr,
102  size_t addr_len);
103 
104 #ifdef __cplusplus
105 }
106 #endif
107 
108 #endif /* NET_IPV4_ADDR_H */
109 
be_uint32_t
A 32 bit integer in big endian aka network byte order.
Definition: byteorder.h:87
ipv4_addr_t
Data type to represent an IPv4 address.
Definition: addr.h:41
byteorder.h
Functions to work with different byte orders.
ipv4_addr_t::u32
network_uint32_t u32
as 32-bit unsigned integer
Definition: addr.h:43
ipv4_addr_from_buf
ipv4_addr_t * ipv4_addr_from_buf(ipv4_addr_t *result, const char *addr, size_t addr_len)
Converts an IPv4 address from a buffer of characters to a byte-represented IPv4 address.
be_uint32_t::u32
uint32_t u32
32 bit representation
Definition: byteorder.h:88
ipv4_addr_equal
static bool ipv4_addr_equal(ipv4_addr_t *a, ipv4_addr_t *b)
Checks if two IPv4 addresses are equal.
Definition: addr.h:55
ipv4_addr_to_str
char * ipv4_addr_to_str(char *result, const ipv4_addr_t *addr, uint8_t result_len)
Converts an IPv4 address to its string representation.
ipv4_addr_from_str
ipv4_addr_t * ipv4_addr_from_str(ipv4_addr_t *result, const char *addr)
Converts an IPv4 address string representation to a byte-represented IPv4 address.