Loading...
Searching...
No Matches
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
30extern "C" {
31#endif
32
36#define IPV4_ADDR_MAX_STR_LEN (sizeof("255.255.255.255"))
37
48#define IPV4_ADDR_INIT(a, b, c, d) { .u8 = {a, b, c, d} }
49
53typedef union {
54 uint8_t u8[4];
57
67static inline bool ipv4_addr_equal(const ipv4_addr_t *a, const ipv4_addr_t *b)
68{
69 return (a->u32.u32 == b->u32.u32);
70}
71
84static inline bool ipv4_addr_is_multicast(const ipv4_addr_t *addr)
85{
86 return (addr->u8[0] >= 0xE0 && addr->u8[0] <= 0xEF);
87}
88
101char *ipv4_addr_to_str(char *result, const ipv4_addr_t *addr, uint8_t result_len);
102
114ipv4_addr_t *ipv4_addr_from_str(ipv4_addr_t *result, const char *addr);
115
130ipv4_addr_t *ipv4_addr_from_buf(ipv4_addr_t *result, const char *addr,
131 size_t addr_len);
132
138void ipv4_addr_print(const ipv4_addr_t *addr);
139
140#ifdef __cplusplus
141}
142#endif
143
144#endif /* NET_IPV4_ADDR_H */
Functions to work with different byte orders.
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.
void ipv4_addr_print(const ipv4_addr_t *addr)
Print IPv4 address to stdout.
static bool ipv4_addr_is_multicast(const ipv4_addr_t *addr)
Check if addr is a multicast address.
Definition addr.h:84
static bool ipv4_addr_equal(const ipv4_addr_t *a, const ipv4_addr_t *b)
Checks if two IPv4 addresses are equal.
Definition addr.h:67
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_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.
A 32 bit integer in big endian aka network byte order.
Definition byteorder.h:84
uint32_t u32
32 bit representation
Definition byteorder.h:85
Data type to represent an IPv4 address.
Definition addr.h:53
uint8_t u8[4]
as 4 8-bit unsigned integer
Definition addr.h:54
network_uint32_t u32
as 32-bit unsigned integer
Definition addr.h:55